কোনও স্ট্রিং অ্যারেটিতে একটি মান রয়েছে কিনা তা পরীক্ষা করা হচ্ছে এবং যদি তাই হয় তবে এর অবস্থান পাচ্ছে


163

আমার কাছে এই স্ট্রিং অ্যারে রয়েছে:

string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";

আমি যদি তা নির্ধারণ করতে চাই stringArray রয়েছেvalue । যদি তা হয় তবে আমি অ্যারেতে এর অবস্থানটি সনাক্ত করতে চাই।

আমি লুপ ব্যবহার করতে চাই না। আমি কীভাবে এটি করতে পারি কেউ পরামর্শ দিতে পারে?

উত্তর:


317

আপনি অ্যারে ব্যবহার করতে পারেন। সূচিপত্র পদ্ধতি:

string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
int pos = Array.IndexOf(stringArray, value);
if (pos > -1)
{
    // the array contains the string and the pos variable
    // will have its position in the array
}

1
... এবং আমি কয়েক মাস ধরে foreach ব্যবহার করে আসছি। বিটিডাব্লু এটি ব্লুপিএক্সওয়াইয়ের উত্তরগুলির চেয়ে কমপিউটিভভাবে দ্রুত? নাকি ধীর?
ম্যাক্স ভন হিপেল

2
কি Array.IndexOfক্যাপিটালাইজেশন জন্য চিন্তা করেন? না "text1" == "TEXT1"?
ইভিল

Array.IndexOf−1সূচক 0-সীমাবদ্ধ হলে কেবল ফেরত দেয়। এই কেসটি ভেঙে যেত, তাই সচেতন থাকুন! var a = Array.CreateInstance(typeof(int),new int[] { 2 }, new int[] { 1 }); a.SetValue(1, 1); Console.WriteLine(Array.IndexOf(a, 26)); // 0
benscabbia

আপনি যদি সঠিক কোনও মিল খুঁজছেন তবে এটি কার্যকর। যাইহোক, আপনি যদি কেসটির
কাইল চ্যাম্পিয়ন

72
var index = Array.FindIndex(stringArray, x => x == value)

7
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি ল্যাম্বডায় একজনকে অ্যারে.ফাইন্ডইন্ডেক্স (অ্যারে, এক্স => এক্স.সেটার্স উইথ ("স্ট্রিংটি এখানে সন্নিবেশ করুন")) এর মতো আরও জটিল কিছু করতে অনুমতি দেয়
রেগেগুইটার

1
তবে প্রশ্নটি যা চাইছে তা নয় not প্রশ্নটি জিজ্ঞাসা করে আপনি কীভাবে কোনও অ্যারে থেকে একটি পরিচিত মান খুঁজে পাবেন।
কার্ল জিজারটেন

2
@ কার্লজিগার্টসেন আমি অ্যারেতে এর অবস্থানটি সনাক্ত করতে চাই
ব্লুপিক্স

এটি খুব কার্যকর যদিও এক্স এর মতো কিছু করতে সক্ষম হওয়া আমার পক্ষে বেশ উপকারী ছিল।
মার্শীক্যাডেন্স

31

আমরা এটিও ব্যবহার করতে পারি Exists:

string[] array = { "cat", "dog", "perl" };

// Use Array.Exists in different ways.
bool a = Array.Exists(array, element => element == "perl");
bool c = Array.Exists(array, element => element.StartsWith("d"));
bool d = Array.Exists(array, element => element.StartsWith("x"));

1
পরিষ্কার এবং সহজ উত্তর
আর্যান ফিরুজিয়ান

আমি পৃথক মানগুলি কীভাবে পরীক্ষা করব? আমি যখন চরের জন্য একটি চরের অ্যারে পরীক্ষা করার চেষ্টা করেছি, তখন আমি একটি বার্তা পেয়েছি যা charরূপান্তর করা যায় নাSystem.Predicate<char>
অ্যারন ফ্র্যাঙ্ক

13

সম্পাদনা: আমিও খেয়াল করিনি যে আপনারও পজিশনের দরকার ছিল। আপনি IndexOfসরাসরি অ্যারের ধরণের কোনও মানটিতে ব্যবহার করতে পারবেন না , কারণ এটি স্পষ্টতই কার্যকর করা হয়েছে। তবে, আপনি ব্যবহার করতে পারেন:

IList<string> arrayAsList = (IList<string>) stringArray;
int index = arrayAsList.IndexOf(value);
if (index != -1)
{
    ...
}

(এই আহ্বান অনুরূপ Array.IndexOfDarin এর উত্তর অনুযায়ী -। শুধু একটি বিকল্প পদ্ধতিতে এটা আমার কাছে পরিষ্কার না কেন হয় অ্যারের স্পষ্টভাবে বাস্তবায়িত, কিন্তু কখনও কিছু মনে ...)IList<T>.IndexOf


কন্টেন্টগুলি ব্যবহার করে অ্যারেতে আমি বিশ্বের সম্ভাবনাটি কীভাবে খুঁজে পাব?
MoShe

স্ট্রিং অ্যারে এ স্ট্রিং আইটেমটি পরীক্ষা করার কোনও সম্ভাবনা আছে কি অন্য স্ট্রিং অ্যারে বিতে বিদ্যমান?
মুরালি মুরুজেসান

@ মুরালিমুরুজেসন: আপনি কী জিজ্ঞাসা করছেন তা পরিষ্কার নয় - দুটি অ্যারেতে কোনও আইটেম রয়েছে কি না? একটি নির্দিষ্ট আইটেম? (পরবর্তী ক্ষেত্রে, এটিও একটি অ্যারেতে থাকা সত্য যেটি অপ্রাসঙ্গিক))
জন স্কিটি

আমি এখানে stackoverflow.com/a/22812525/1559213 উত্তর দেওয়ার চেষ্টা করছিলাম । আমি এইচটিএমএল.চেকবক্স লাইনের জন্য সত্য / মিথ্যা প্রত্যাবর্তনের জন্য প্রহার করেছি। প্রকৃতপক্ষে একটি মাসের অ্যারে রয়েছে এবং এছাড়াও কিছু মাস রয়েছে এমন মডেল। যদি মডেল মাস কয়েক মাসের অ্যারেতে উপস্থিত হয় তবে আমাদের সত্য ফিরে আসতে হবে। রকেট সাড়া দেওয়ার জন্য ধন্যবাদ :)
মুরালি মুরুগেসন

@ মুরালিমুরুজেসন: ভাল লাগছেif (months.Contains(model.Month))
জোন স্কিট

5

আপনি ব্যবহার করতে পারেন Array.IndexOf()- নোট করুন যে উপাদানটি খুঁজে পাওয়া যায়নি এবং আপনাকে এই কেসটি পরিচালনা করতে হলে এটি -1 ফিরে আসবে।

int index = Array.IndexOf(stringArray, value);

4

আপনি এটির মতো চেষ্টা করতে পারেন ... আপনি যদি অবস্থানটিও জানতে চান তবে আপনি অ্যারে ব্যবহার করতে পারেন nd সূচিপত্র ()

       string [] arr = {"One","Two","Three"};
       var target = "One";
       var results = Array.FindAll(arr, s => s.Equals(target));

3

কোনও অ্যারেতে প্রদত্ত মান রয়েছে কিনা তা যাচাই করার জন্য আইএমও সর্বোত্তম উপায় হল System.Collections.Generic.IList<T>.Contains(T item)নীচের পদ্ধতিটি ব্যবহার করা :

((IList<string>)stringArray).Contains(value)

সম্পূর্ণ কোড নমুনা:

string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if (((IList<string>)stringArray).Contains(value)) Console.WriteLine("The array contains "+value);
else Console.WriteLine("The given string was not found in array.");

T[]অ্যারেগুলি ব্যক্তিগতভাবে কয়েকটি পদ্ধতি List<T>যেমন কাউন্ট এবং কন্টেনগুলি বাস্তবায়ন করে implement এটি একটি সুস্পষ্ট (বেসরকারী) বাস্তবায়ন হওয়ায় আপনি প্রথমে অ্যারে না ফেলেই এই পদ্ধতিগুলি ব্যবহার করতে পারবেন না। এটি কেবল স্ট্রিংয়ের জন্যই কাজ করে না - আপনি এই কৌশলটি কোনও ধরণের অ্যারেতে কোনও উপাদান রয়েছে কিনা তা পরীক্ষা করতে ব্যবহার করতে পারবেন, যতক্ষণ না মৌলটির শ্রেণি আইকোপারেবল প্রয়োগ করে।

মনে রাখবেন যে সমস্ত IList<T>পদ্ধতি এইভাবে কাজ করে না । IList<T>অ্যারেতে অ্যাড পদ্ধতি ব্যবহার করার চেষ্টা করা ব্যর্থ হবে।


2
ইতিমধ্যে আপনার প্রিয়ঙ্কের উত্তর। এটি সেই উপাদানটির সূচক দেয় না যা ওপি যা চেয়েছিল তা বলে।
রেগেগুইটার

@reggaeguitar সেখানে আপনার সাথে একমত!
সি

এটি সমাধানটি আমি খুঁজছিলাম, যদিও এটি প্রশ্নের পুরোপুরি উত্তর দেয় না।
অস্পেক্স

1

আপনি এটি চেষ্টা করতে পারেন, এটি এই উপাদানটি সহ সূচকটি সন্ধান করে এবং এটি সূচী সংখ্যাটি int হিসাবে নির্ধারণ করে, তারপরে এটি int -1 এর চেয়ে বেশি হয় কিনা তা পরীক্ষা করে দেখায় এটি যদি 0 বা তার বেশি হয় তবে এর অর্থ এটি এরকম পাওয়া গেছে একটি সূচক - অ্যারে 0 ভিত্তিক হয়।

string[] Selection = {"First", "Second", "Third", "Fourth"};
string Valid = "Third";    // You can change this to a Console.ReadLine() to 
    //use user input 
int temp = Array.IndexOf(Selection, Valid); // it gets the index of 'Valid', 
                // in our case it's "Third"
            if (temp > -1)
                Console.WriteLine("Valid selection");
            }
            else
            {
                Console.WriteLine("Not a valid selection");
            }

0
string x ="Hi ,World";
string y = x;
char[] whitespace = new char[]{ ' ',\t'};          
string[] fooArray = y.Split(whitespace);  // now you have an array of 3 strings
y = String.Join(" ", fooArray);
string[] target = { "Hi", "World", "VW_Slep" };

for (int i = 0; i < target.Length; i++)
{
    string v = target[i];
    string results = Array.Find(fooArray, element => element.StartsWith(v, StringComparison.Ordinal));
    //
    if (results != null)
    { MessageBox.Show(results); }

}

0

আমি পুনরায় ব্যবহারের জন্য একটি এক্সটেনশন পদ্ধতি তৈরি করেছি।

   public static bool InArray(this string str, string[] values)
    {
        if (Array.IndexOf(values, str) > -1)
            return true;

        return false;
    }

কীভাবে এটি কল করবেন:

string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if(value.InArray(stringArray))
{
  //do something
}

positionওপি কোথায় জিজ্ঞাসা করছে?
সি

-3
string[] strArray = { "text1", "text2", "text3", "text4" };
string value = "text3";

if(Array.contains(strArray , value))
{
    // Do something if the value is available in Array.
}

এটি ত্রুটি দেয়: 'সিস্টেম.আর্রে' এর মধ্যে 'অন্তর্ভুক্ত' এর সংজ্ঞা নেই।
ইপান্ডিট

-4

সবচেয়ে সহজ এবং খাটো পদ্ধতিটি নিম্নলিখিত হবে।

string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";

if(stringArray.Contains(value))
{
    // Do something if the value is available in Array.
}

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