একটি স্ট্রিংয়ে দুটি স্ট্রিংয়ের মধ্যে স্ট্রিং পান


109

আমার মতো স্ট্রিং রয়েছে:

"super exemple of string key : text I want to keep - end of my string"

আমি শুধু যে স্ট্রিংটি মধ্যে রাখতে চান "key : "এবং " - "। আমি এটা কিভাবে করবো? আমি কি একটি রেজেক্স ব্যবহার করব বা আমি এটি অন্য উপায়ে করতে পারি?


4
ব্যবহার substringএবংindexof
সায়

একটি স্ট্রিংয়ের পরে একটি নির্দিষ্ট স্ট্রিংয়ের পরে এবং অন্য একটি নির্দিষ্ট স্ট্রিংয়ের আগে স্ট্রিংটি পান যা পূর্ববর্তী স্ট্রিংটিতে থাকে সেই স্ট্রিংয়ের মধ্যেও রয়েছে ..
কেন কিন

উত্তর:


172

সম্ভবত, একটি ভাল উপায় কেবল একটি স্ট্রিং কেটে ফেলা হয় :

String St = "super exemple of string key : text I want to keep - end of my string";

int pFrom = St.IndexOf("key : ") + "key : ".Length;
int pTo = St.LastIndexOf(" - ");

String result = St.Substring(pFrom, pTo - pFrom);

38
string input = "super exemple of string key : text I want to keep - end of my string";
var match = Regex.Match(input, @"key : (.+?)-").Groups[1].Value;

বা কেবল স্ট্রিং অপারেশন সহ

var start = input.IndexOf("key : ") + 6;
var match2 = input.Substring(start, input.IndexOf("-") - start);

30

আপনি এটি রেগেক্স ছাড়াই করতে পারেন

 input.Split(new string[] {"key :"},StringSplitOptions.None)[1]
      .Split('-')[0]
      .Trim();

7
এটি মেমরিতে একাধিক অপরিবর্তিত স্ট্রিং তৈরি করবে। আপনি যদি মেমরির বিষয়ে চিন্তা করেন তবে এটি ব্যবহার করবেন না।
মিকেল ডিই বলিণ্ডার

14

আপনি নিজের বাস্তবায়নটি কতটা শক্তিশালী / নমনীয় করতে চান তার উপর নির্ভর করে এটি আসলে কিছুটা জটিল হতে পারে। আমি ব্যবহার করছি বাস্তবায়ন এখানে:

public static class StringExtensions {
    /// <summary>
    /// takes a substring between two anchor strings (or the end of the string if that anchor is null)
    /// </summary>
    /// <param name="this">a string</param>
    /// <param name="from">an optional string to search after</param>
    /// <param name="until">an optional string to search before</param>
    /// <param name="comparison">an optional comparison for the search</param>
    /// <returns>a substring based on the search</returns>
    public static string Substring(this string @this, string from = null, string until = null, StringComparison comparison = StringComparison.InvariantCulture)
    {
        var fromLength = (from ?? string.Empty).Length;
        var startIndex = !string.IsNullOrEmpty(from) 
            ? @this.IndexOf(from, comparison) + fromLength
            : 0;

        if (startIndex < fromLength) { throw new ArgumentException("from: Failed to find an instance of the first anchor"); }

            var endIndex = !string.IsNullOrEmpty(until) 
            ? @this.IndexOf(until, startIndex, comparison) 
            : @this.Length;

        if (endIndex < 0) { throw new ArgumentException("until: Failed to find an instance of the last anchor"); }

        var subString = @this.Substring(startIndex, endIndex - startIndex);
        return subString;
    }
}

// usage:
var between = "a - to keep x more stuff".Substring(from: "-", until: "x");
// returns " to keep "

আমি আপনার কোডটি ব্যবহার করেছি, তবে আমি যখন এই এ @ ইনডেক্স অফে (অবধি, স্টার্টইন্ডেক্স + লেন্থ, তুলনা) „এবি" এর মতো স্ট্রিং থেকে যেখানে এ থেকে এবং বি অবধি রয়েছে তখনই আমি একটি ছোট বাগ পেয়েছি, সুতরাং আমি লেন্থ থেকে + সরিয়েছি। যদিও আমি এটি গভীরভাবে পরীক্ষা
করিনি

4
@ অ্যাড্রিয়ানআইফটড: ভাল কল এটি অবশ্যই একটি বাগ ছিল। স্টার্ট ইন্ডেক্সে দ্বিতীয় অ্যাঙ্কারের সন্ধান শুরু করা অর্থবোধ করে, যেহেতু এটি ইতিমধ্যে প্রথম অ্যাঙ্কারের শেষের পরে past আমি এখানে কোড স্থির করেছি।
চেসমেডালিয়ন

InvariantCultureউইন্ডোজ ইউনিভার্সাল অ্যাপসের সাথে কাজ করছে না। এটি আপনার ক্লাসের কার্যকারিতা বজায় রেখে মুছে ফেলার কোনও উপায় আছে কি? @ চেজমেডালিয়ন
লিওন

@ লিওন: আপনার সংস্কৃতি সম্পর্কিত সমস্ত জিনিস ছাঁটাই করতে সক্ষম হওয়া উচিত এবং নেট নেট সূচিপত্রে পরিচালিত বর্তমান সংস্কৃতিটি ব্যবহার করবে use যদিও আমি উইন্ডোজ ইউনিভার্সাল অ্যাপসের সাথে পরিচিত নই, তাই আমি নিশ্চিত করে বলতে পারি না।
চেজমেডালিয়ন

14

আমি মনে করি এটি কাজ করে:

   static void Main(string[] args)
    {
        String text = "One=1,Two=2,ThreeFour=34";

        Console.WriteLine(betweenStrings(text, "One=", ",")); // 1
        Console.WriteLine(betweenStrings(text, "Two=", ",")); // 2
        Console.WriteLine(betweenStrings(text, "ThreeFour=", "")); // 34

        Console.ReadKey();

    }

    public static String betweenStrings(String text, String start, String end)
    {
        int p1 = text.IndexOf(start) + start.Length;
        int p2 = text.IndexOf(end, p1);

        if (end == "") return (text.Substring(p1));
        else return text.Substring(p1, p2 - p1);                      
    }

দুর্দান্ত সমাধান। ধন্যবাদ!
arcee123

13

আমি কীভাবে এটি করতে পারি তা এখানে

   public string Between(string STR , string FirstString, string LastString)
    {       
        string FinalString;     
        int Pos1 = STR.IndexOf(FirstString) + FirstString.Length;
        int Pos2 = STR.IndexOf(LastString);
        FinalString = STR.Substring(Pos1, Pos2 - Pos1);
        return FinalString;
    }

11

রেজেক্স এখানে ওভারকিল।

আপনি পারে ব্যবহার string.Splitজমিদার করে একটি লাগে সঙ্গে string[]বিভেদক জন্য কিন্তু যে হবে এছাড়াও Overkill হও।

তাকান Substringএবং IndexOf- একটি স্ট্রিং দেওয়া এবং সূচক এবং দৈর্ঘ্য এবং ভিতরের স্ট্রিং / অক্ষরের ইন্ডেক্স খোঁজার জন্য দ্বিতীয় অংশ পেতে সাবেক।


4
এটি ওভারকিল নয় ... আসলে আমি বলব সাবস্ট্রিং এবং ইনডেক্সফ অফ আন্ডারকিল। আমি বলব স্ট্রিং.স্প্লিট প্রায় সঠিক। রেজেক্স ওভারকিল
ইটনাটালি

4
ওভারকিল বা আন্ডার-কিল হবার বিষয়টি হ'ল মোট, কারণ উত্তরটি রেগেক্সের চেয়ে অন্যভাবে করার পোস্টারের অনুরোধটি পূরণ করে।
কার্ল অ্যান্ডারসন

4
@ নিউস্ট্যাকএক্সচেঞ্জইনস্ট্যান্স: "কী:" এর আগে "-" থাকলে এটি ব্যর্থ হয়। সাবস্ট্রিং স্পট অন।
jmoreno

@ নিউস্ট্যাকএক্সচেঞ্জইনস্ট্যান্স - আমি বিশ্বাস করি তিনি কথা বলছেন string.Split
ওবেদ

7

একটি কার্যকারী লিনকিউ সমাধান:

string str = "super exemple of string key : text I want to keep - end of my string";
string res = new string(str.SkipWhile(c => c != ':')
                           .Skip(1)
                           .TakeWhile(c => c != '-')
                           .ToArray()).Trim();
Console.WriteLine(res); // text I want to keep

এটি কি কেবল একক-চরিত্রের স্থানধারীদের জন্য কাজ করে?
beppe9000

5
 string str="super exemple of string key : text I want to keep - end of my string";
        int startIndex = str.IndexOf("key") + "key".Length;
        int endIndex = str.IndexOf("-");
        string newString = str.Substring(startIndex, endIndex - startIndex);

4
আপনার কোডের ফলে নতুন স্ট্রিংয়ের শুরুতে কোলনটি ফিরে আসবে।
tsells

5

বা, একটি রেজেক্স সহ।

using System.Text.RegularExpressions;

...

var value =
    Regex.Match(
        "super exemple of string key : text I want to keep - end of my string",
        "key : (.*) - ")
    .Groups[1].Value;

একটি চলমান উদাহরণ সহ

এর ওভারকিল কিনা তা আপনি সিদ্ধান্ত নিতে পারেন।

বা

একটি বৈধ এক্সটেনশন পদ্ধতি হিসাবে

using System.Text.RegularExpressions;

public class Test
{
    public static void Main()
    {
        var value =
                "super exemple of string key : text I want to keep - end of my string"
                    .Between(
                        "key : ",
                        " - ");

        Console.WriteLine(value);
    }
}

public static class Ext
{
    static string Between(this string source, string left, string right)
    {
        return Regex.Match(
                source,
                string.Format("{0}(.*){1}", left, right))
            .Groups[1].Value;
    }
}

5

যেহেতু :এবং -যেগুলি অনন্য আপনি ব্যবহার করতে পারেন:

string input;
string output;
input = "super example of string key : text I want to keep - end of my string";
output = input.Split(new char[] { ':', '-' })[1];

এই উত্তরটি ইতিমধ্যে বিদ্যমান উত্তরের পরিমাণে অর্থপূর্ণ কিছু যুক্ত করে না।
মেফি

4

আপনি নীচে এক্সটেনশন পদ্ধতিটি ব্যবহার করতে পারেন:

public static string GetStringBetween(this string token, string first, string second)
    {            
        if (!token.Contains(first)) return "";

        var afterFirst = token.Split(new[] { first }, StringSplitOptions.None)[1];

        if (!afterFirst.Contains(second)) return "";

        var result = afterFirst.Split(new[] { second }, StringSplitOptions.None)[0];

        return result;
    }

ব্যবহার হ'ল:

var token = "super exemple of string key : text I want to keep - end of my string";
var keyValue = token.GetStringBetween("key : ", " - ");

4
var matches = Regex.Matches(input, @"(?<=key :)(.+?)(?=-)");

এটি "কী" "এবং" - "এর নিম্নলিখিত সংঘর্ষের মধ্যে কেবল মান (গুলি) প্রদান করে


4

আমি বিজয় সিং রানা থেকে কোড স্নিপেট ব্যবহার করেছি যা মূলত কাজটি করে। যদি এটি firstStringইতিমধ্যে থাকে তবে এটি সমস্যা তৈরি করে lastString। আমি যা চাইছিলাম তা ছিল কোনও জেএসএন প্রতিক্রিয়া (কোনও জেএসএন পার্সার বোঝা হয়নি) থেকে একটি অ্যাক্সেস টোকন বের করা। আমার firstStringছিল \"access_token\": \"এবং আমার lastStringছিল \"। আমি একটু পরিবর্তন করে শেষ করেছি

string Between(string str, string firstString, string lastString)
{    
    int pos1 = str.IndexOf(firstString) + firstString.Length;
    int pos2 = str.Substring(pos1).IndexOf(lastString);
    return str.Substring(pos1, pos2);
}

4
অপ্রয়োজনীয়তা আছে। pos1 পোস্ট 2 এ যুক্ত হয়েছিল এবং তারপরে পোস্ট 2 থেকে বাদ পড়ে।
Jfly

ধন্যবাদ, আপনি ঠিক বলেছেন। আমি উপরের উদাহরণটি সংশোধন করেছি।
এনভিএম-উলি

3

যদি আপনি 1 লাইন সমাধান সন্ধান করেন তবে এটি হ'ল:

s.Substring(s.IndexOf("eT") + "eT".Length).Split("97".ToCharArray()).First()

সম্পূর্ণ 1 লাইন সমাধান, সাথে System.Linq:

using System;
using System.Linq;

class OneLiner
{
    static void Main()
    {
        string s = "TextHereTisImortant973End"; //Between "eT" and "97"
        Console.WriteLine(s.Substring(s.IndexOf("eT") + "eT".Length)
                           .Split("97".ToCharArray()).First());
    }
}

2

সি # 8.0 এবং উপরে, আপনি পরিসীমা অপারেটর ব্যবহার করতে পারেন ..হিসাবে

var s = "header-THE_TARGET_STRING.7z";
var from = s.IndexOf("-") + "-".Length;
var to = s.IndexOf(".7z");
var versionString = s[from..to];  // THE_TARGET_STRING

বিশদ জন্য ডকুমেন্টেশন দেখুন ।


আমি সি # 8 এবং এর উপরে সংক্ষিপ্ত হাতের পদ্ধতিটি পছন্দ করি!
কেওেক্স

1

আপনি যদি স্ট্রিং জোড়াগুলির একাধিক উপস্থিতি পরিচালনা করতে চান তবে RegEx ছাড়া এটি সহজ হবে না:

Regex.Matches(input ?? String.Empty, "(?=key : )(.*)(?<= - )", RegexOptions.Singleline);
  • input ?? String.Empty যুক্তি নাল ব্যতিক্রম এড়ানো
  • ?=1 ম সাবস্ট্রিং ?<=রাখে এবং 2 য় সাবস্ট্রিং রাখে
  • RegexOptions.Singleline স্ট্রিং জোড়ার মধ্যে নতুন লাইনের অনুমতি দেয়

যদি সাবস্ট্রিংয়ের ক্রম এবং সংঘটন গণনাটি বিবেচনা না করে তবে এই দ্রুত এবং নোংরা একটি বিকল্প হতে পারে:

var parts = input?.Split(new string[] { "key : ", " - " }, StringSplitOptions.None);
string result = parts?.Length >= 3 ? result[1] : input;

কমপক্ষে এটি বেশিরভাগ ব্যতিক্রমকে এড়িয়ে চলে, যদি না / একক সাবস্ট্রিংয়ের সাথে মেলে না তবে মূল স্ট্রিংটি ফিরিয়ে।


1
  private string gettxtbettwen(string txt, string first, string last)
    {

        StringBuilder sb = new StringBuilder(txt);
        int pos1 = txt.IndexOf(first)  + first.Length;
        int len = (txt.Length ) - pos1;

        string reminder = txt.Substring(pos1, len);


        int pos2 = reminder.IndexOf(last) - last.Length +1;


       



        return reminder.Substring(0, pos2); 



    }

0

আপনার ইতিমধ্যে কিছু ভাল উত্তর রয়েছে এবং আমি বুঝতে পারি যে আমি সরবরাহ করছি কোডটি সবচেয়ে কার্যকর এবং পরিষ্কার থেকে অনেক দূরে। তবে আমি ভেবেছিলাম এটি শিক্ষাগত উদ্দেশ্যে কার্যকর হতে পারে। আমরা সারা দিন ধরে প্রাক-বিল্ট ক্লাস এবং লাইব্রেরি ব্যবহার করতে পারি। তবে অভ্যন্তরীণ কাজগুলি না বুঝে আমরা কেবল নকল করছি এবং পুনরাবৃত্তি করছি এবং কখনই কিছুই শিখব না। এই কোডটি কাজ করে এবং অন্যগুলির তুলনায় আরও বেসিক বা "কুমারী":

char startDelimiter = ':';
char endDelimiter = '-';

Boolean collect = false;

string parsedString = "";

foreach (char c in originalString)
{
    if (c == startDelimiter)
         collect = true;

    if (c == endDelimiter)
         collect = false;

    if (collect == true && c != startDelimiter)
         parsedString += c;
}

আপনি আপনার পছন্দসই স্ট্রিংটি পার্সড স্ট্রিং ভেরিয়েবলের জন্য নির্ধারিত করবেন। মনে রাখবেন যে এটি অগ্রগতি এবং পূর্ববর্তী স্থানগুলিও ক্যাপচার করবে। মনে রাখবেন যে স্ট্রিং কেবলমাত্র অক্ষরের একটি অ্যারে যা সূচকগুলি সহ অন্যান্য অ্যারের মতো হেরফের করা যায় etc.

যত্ন নিবেন.


স্ট্রিং তৈরির ক্ষেত্রে এটি সবচেয়ে খারাপ যদিও এটি সেরা অ্যালগরিদম। প্রদত্ত সমস্ত উত্তর যা কেবলমাত্র রেইজেক্স নয়, কেবল স্ট্রিং তৈরি করতে ট্রিগার-খুশি তবে এইটি সেই দিক থেকে সবচেয়ে খারাপ। আপনি যদি ক্যাপচারের জন্য স্ট্রিংয়ের প্রারম্ভটি সবেমাত্র ক্যাপচার করে রেখেছিলেন এবং এটি বের করার জন্য '' স্ট্রিং.সুবস্ট্রিং '' ব্যবহার করেন, এটি সঠিক হবে।
পাওলো মোরগাদো

আমি রাজী. আমি যেমন উল্লেখ করেছি, এটি দক্ষতার চেয়ে অনেক দূরে। আমি এই অ্যালগরিদম ব্যবহার করার পরামর্শ দেব না। এটি কেবল "" এটি ডুবিয়ে দেওয়া "তাই তিনি নিম্ন স্তরের স্ট্রিংগুলি বুঝতে পারেন If যদি তিনি কেবল কাজটি করতে চান তবে ইতিমধ্যে তার উত্তর রয়েছে যা অর্জন করবে
ফ্লাইএনফ্লিপ

আমি বুঝতে পেরেছি. আমি কেবল এর শক্তিশালী এবং সপ্তাহের পয়েন্টগুলি নির্দেশ করছি। যদিও, মূল প্রশ্নের উত্তর দেওয়ার জন্য এটি আরও কিছুটা প্রয়োজন কারণ এটি কেবল অক্ষরের সীমানার সাথে নয়, একটি স্ট্রিংয়ের সীমানাও মেলে। তবে ধারণাটি ঠিক একই।
পাওলো মোরগাদো

0

আমি যেমন সবসময় বলি কিছুই অসম্ভব:

string value =  "super exemple of string key : text I want to keep - end of my string";
Regex regex = new Regex(@"(key \: (.*?) _ )");
Match match = regex.Match(value);
if (match.Success)
{
    Messagebox.Show(match.Value);
}

স্মরণকারী যা System.Text.RegularExpressions এর রেফারেন্স যুক্ত করে

আশা করি আমি সাহায্য করেছি।


0

এরকম কিছু সম্ভবত

private static string Between(string text, string from, string to)
{
    return text[(text.IndexOf(from)+from.Length)..text.IndexOf(to, text.IndexOf(from))];
}

0

প্রশ্নগুলি যখন একক উদাহরণের শর্তে বর্ণিত হয় তখন অস্পষ্টতা অবশ্যই উপস্থিত থাকে। এই প্রশ্ন ব্যতিক্রম নয়।

প্রশ্নে প্রদত্ত উদাহরণের জন্য পছন্দসই স্ট্রিংটি পরিষ্কার:

super example of string key : text I want to keep - end of my string
                              ^^^^^^^^^^^^^^^^^^^

যাইহোক, এই স্ট্রিংটি কেবল স্ট্রিংস এবং সীমানা স্ট্রিংগুলির উদাহরণ যার জন্য নির্দিষ্ট সাবস্ট্রিংগুলি সনাক্ত করতে হবে। আমি জেনেরিক সীমানা স্ট্রিং সহ একটি জেনেরিক স্ট্রিং বিবেচনা করব, যা নীচে উপস্থাপন করা হয়েছে।

abc FF def PP ghi,PP jkl,FF mno PP pqr FF,stu FF vwx,PP yza
             ^^^^^^^^^^^^         ^^^^^  

PPহয় পূর্ববর্তী স্ট্রিং , FFনিম্নলিখিত স্ট্রিং এবং পার্টি টুপি ইঙ্গিত যা, সাবস্ট্রিং মিলেছে করা হয়। (প্রশ্নে প্রদত্ত উদাহরণে key : পূর্ববর্তী স্ট্রিংটি এবং -এটি নিম্নোক্ত স্ট্রিং)) আমি ধরে নিয়েছি PPএবং FFএর আগে এবং শব্দের সীমাবদ্ধতা অনুসরণ করা হয় (যাতে PPAএবং FF8এটি মেলে না)।

আমার অনুমান যেমন পার্টির হাটগুলি দ্বারা প্রতিবিম্বিত হয়েছে তা নিম্নরূপ:

  • প্রথম সাবস্ট্রিং এর PPআগে একটি (বা আরও) FFসাবস্ট্রিংয়ের আগে থাকতে পারে , যা উপস্থিত থাকলে অবহেলা করা হয়;
  • তাহলে PPএক দ্বারা অনুসরণ করা হয় বা তার বেশি PPআগে গুলি FFসম্মুখীন করা হয়, নিম্নলিখিত PPগুলি পূর্ববর্তী এবং পরবর্তী স্ট্রিং মধ্যে সাবস্ট্রিং অংশ;
  • যদি PPএক বা একাধিক দ্বারা অনুসরণ করা হয় FFগুলি করার পূর্বে একটি PPএনকাউন্টার, প্রথম FFনিম্নলিখিত PPনিম্নলিখিত পংক্তি বলে মনে করা হয়।

মনে রাখবেন যে এখানে অনেক উত্তর কেবলমাত্র ফর্মের স্ট্রিং নিয়ে কাজ করে

abc PP def FF ghi
      ^^^^^

বা

abc PP def FF ghi PP jkl FF mno
      ^^^^^         ^^^^^

আগ্রহের সাবস্ট্রিংগুলি সনাক্ত করতে কেউ একটি নিয়মিত প্রকাশ, কোড গঠন বা দুটির সংমিশ্রণ ব্যবহার করতে পারে। কোন পদ্ধতির মধ্যে সবচেয়ে ভাল তা আমি কোন রায় দিই না। আমি কেবল নিম্নলিখিত নিয়মিত প্রকাশটি উপস্থাপন করব যা আগ্রহের সাবস্ট্রিংয়ের সাথে মেলে।

(?<=\bPP\b)(?:(?!\bFF\b).)*(?=\bFF\b)

আপনার ইঞ্জিন শুরু করুন!

আমি এটি পিসিআরই (পিএইচপি) রেজেক্স ইঞ্জিন দিয়ে পরীক্ষা করেছিলাম, কিন্তু রেজেক্স মোটেও বহিরাগত নয় বলে আমি নিশ্চিত যে এটি .NET রেজেক্স ইঞ্জিনের সাথে কাজ করবে (যা খুব শক্তিশালী)।

রেজেক্স ইঞ্জিন নিম্নলিখিত ক্রিয়াকলাপ সম্পাদন করে:

(?<=          : begin a positive lookbehind
  \bPP\b      : match 'PP'
)             : end positive lookbehind
(?:           : begin a non-capture group
  (?!         : begin a negative lookahead
    \bFF\b    : match 'FF'
  )           : end negative lookahead
  .           : match any character
)             : end non-capture group
*             : execute non-capture group 0+ times
(?=           : begin positive lookahead
   \bFF\b     : match 'FF'
)             : end positive lookahead

পূর্ববর্তী স্ট্রিং অনুসরণ করে একবারে একটি চরিত্রের সাথে মেলে এই কৌশলটি, যতক্ষণ না চরিত্রটি থাকে Fএবং তার অনুসরণ না করা হয় F(বা আরও সাধারণভাবে, চরিত্রটি নীচের স্ট্রিং গঠন করে এমন স্ট্রিং তৈরি করে), তাকে টেম্পার্ড লোভী টোকেন সলিউশন বলে

স্বাভাবিকভাবেই, আমি উপরে বর্ণিত অনুমানগুলি পরিবর্তন করা হলে রেজেক্সকে সংশোধন করতে হবে (সম্ভব হলে)।

1. বিস্তারিত ব্যাখ্যার জন্য কার্সারটিকে চারদিকে নিয়ে যান।


-1
getStringBetween(startStr, endStr, fullStr) {
    string startIndex = fullStr.indexOf(startStr);
    string endIndex= fullStr.indexOf(endStr);
    return fullStr.substring(startIndex + startStr.length, endIndex);
}

@ কিরানআমাদিপুদি স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম। আপনার প্রস্তাবিত সমাধানটি ওপিতে সহায়তা করতে পারে বলে আপনি কী মনে করেন দয়া করে কিছু ব্যাখ্যা সরবরাহ করুন।
পিটার Csala
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.