我想在C#中检查String是否包含"a"或"b"或"c".我正在寻找比使用更好的解决方案
if (s.contains("a")||s.contains("b")||s.contains("c"))
Run Code Online (Sandbox Code Playgroud)
Dan*_*Tao 86
好吧,总是这样:
public static bool ContainsAny(this string haystack, params string[] needles)
{
foreach (string needle in needles)
{
if (haystack.Contains(needle))
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
用法:
bool anyLuck = s.ContainsAny("a", "b", "c");
Run Code Online (Sandbox Code Playgroud)
但是,没有什么能比得上你的||
比较链的表现.
Jef*_*ado 62
这是一个LINQ解决方案,几乎相同但可扩展性更强:
new[] { "a", "b", "c" }.Any(c => s.Contains(c))
Run Code Online (Sandbox Code Playgroud)
小智 36
var values = new [] {"abc", "def", "ghj"};
var str = "abcedasdkljre";
values.Any(str.Contains);
Run Code Online (Sandbox Code Playgroud)
jet*_*hro 21
您可以尝试使用正则表达式
string s;
Regex r = new Regex ("a|b|c");
bool containsAny = r.IsMatch (s);
Run Code Online (Sandbox Code Playgroud)
Mik*_*ver 11
如果您需要具有特定的ContainsAny StringComparison
(例如忽略大小写),则可以使用此String Extentions方法.
public static class StringExtensions
{
public static bool ContainsAny(this string input, IEnumerable<string> containsKeywords, StringComparison comparisonType)
{
return containsKeywords.Any(keyword => input.IndexOf(keyword, comparisonType) >= 0);
}
}
Run Code Online (Sandbox Code Playgroud)
用法StringComparison.CurrentCultureIgnoreCase
:
var input = "My STRING contains Many Substrings";
var substrings = new[] {"string", "many substrings", "not containing this string" };
input.ContainsAny(substrings, StringComparison.CurrentCultureIgnoreCase);
// The statement above returns true.
”xyz”.ContainsAny(substrings, StringComparison.CurrentCultureIgnoreCase);
// This statement returns false.
Run Code Online (Sandbox Code Playgroud)
小智 6
这是一个"更好的解决方案",非常简单
if(new string[] { "A", "B", ... }.Any(s=>myString.Contains(s)))
Run Code Online (Sandbox Code Playgroud)
List<string> includedWords = new List<string>() { "a", "b", "c" };
bool string_contains_words = includedWords.Exists(o => s.Contains(o));
Run Code Online (Sandbox Code Playgroud)
public static bool ContainsAny(this string haystack, IEnumerable<string> needles)
{
return needles.Any(haystack.Contains);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
137794 次 |
最近记录: |