উত্তর:
নিম্নলিখিতটি আমার দৃষ্টিতে সহজ পদ্ধতি হবে:
var match = str.IndexOfAny(new char[] { '*', '&', '#' }) != -1
অথবা পড়া সহজভাবে ফর্মটিতে:
var match = str.IndexOfAny("*&#".ToCharArray()) != -1
প্রসঙ্গ এবং প্রয়োজনীয় পারফরম্যান্সের উপর নির্ভর করে আপনি চর অ্যারে ক্যাশে করতে বা করতে চাইতে পারেন।
অন্যরা যেমন বলেছে, ইনডেক্স অফ ব্যবহার করুন। তবে, আমি এটি এইভাবে ব্যবহার করব:
private static readonly char[] Punctuation = "*&#...".ToCharArray();
public static bool ContainsPunctuation(string text)
{
return text.IndexOfAny(Punctuation) >= 0;
}
এইভাবে আপনি প্রতিটি কলে একটি নতুন অ্যারে তৈরি শেষ করবেন না। স্ট্রিংটি আইএমওর একটি ধারাবাহিক অক্ষরের চেয়ে স্ক্যান করা সহজ।
অবশ্যই আপনি যদি এটি একবার ব্যবহার করতে যাচ্ছেন, তাই নষ্ট সৃষ্টি কোনও সমস্যা নয়, আপনি হয় ব্যবহার করতে পারেন:
private const string Punctuation = "*&#...";
public static bool ContainsPunctuation(string text)
{
return text.IndexOfAny(Punctuation.ToCharArray()) >= 0;
}
অথবা
public static bool ContainsPunctuation(string text)
{
return text.IndexOfAny("*&#...".ToCharArray()) >= 0;
}
আপনি অন্য কোথাও বিরামচিহ্নগুলি ব্যবহার করতে চান কিনা এবং পদ্ধতিটি কতবার কল হতে চলেছে তা নির্ভর করে এটি নির্ভর করে।
সম্পাদনা করুন: এখানে দুঃশ্চিন্তা একটি স্ট্রিং থাকে জন্য রিড Copsey এর পদ্ধতি বিকল্প নেই ঠিক একটি অক্ষরের।
private static readonly HashSet<char> Punctuation = new HashSet<char>("*&#...");
public static bool ContainsOnePunctuationMark(string text)
{
bool seenOne = false;
foreach (char c in text)
{
// TODO: Experiment to see whether HashSet is really faster than
// Array.Contains. If all the punctuation is ASCII, there are other
// alternatives...
if (Punctuation.Contains(c))
{
if (seenOne)
{
return false; // This is the second punctuation character
}
seenOne = true;
}
}
return seenOne;
}
ToCharArrayপ্রয়োজনে অবশ্যই "ইনলাইন" ফর্মটি ব্যবহার করতে পারেন ।
যদি আপনি কেবল এটির কোনও অক্ষর রয়েছে কিনা তা দেখতে চান তবে আমি অন্য জায়গায় প্রস্তাবিত স্ট্রিং.ইনডেক্সঅফএনি ব্যবহারের পরামর্শ দেব।
আপনি যদি যাচাই করতে চান যে স্ট্রিংয়ে দশটি অক্ষরের একটি এবং একটি মাত্র রয়েছে , তবে এটি কিছুটা জটিল হয়ে ওঠে। আমি বিশ্বাস করি যে দ্রুততম উপায় হ'ল একটি ছেদটির বিরুদ্ধে পরীক্ষা করা, তারপরে সদৃশগুলি পরীক্ষা করা।
private static char[] characters = new char [] { '*','&',... };
public static bool ContainsOneCharacter(string text)
{
var intersection = text.Intersect(characters).ToList();
if( intersection.Count != 1)
return false; // Make sure there is only one character in the text
// Get a count of all of the one found character
if (1 == text.Count(t => t == intersection[0]) )
return true;
return false;
}
String.IndexOfAny(Char[])
এখানে Microsoft এর ডকুমেন্টেশন ।
সব কিছুর জন্য তোমাকে ধন্নবাদ! (এবং প্রধানত জোন!): এটি আমাকে এটি লেখার অনুমতি দিয়েছে:
private static readonly char[] Punctuation = "$€£".ToCharArray();
public static bool IsPrice(this string text)
{
return text.IndexOfAny(Punctuation) >= 0;
}
যেহেতু আমি একটি নির্দিষ্ট স্ট্রিংয়ের দাম বা বাক্য, যেমন 'প্রদর্শন করা খুব কম' এর মতো সনাক্ত করার জন্য একটি ভাল উপায় সন্ধান করছিলাম।