C#字符串不包含可能
本文关键字:包含可 字符串 | 更新日期: 2023-09-27 17:57:54
我想知道一个字符串何时不包含两个字符串。例如
string firstString = "pineapple"
string secondString = "mango"
string compareString = "The wheels on the bus go round and round"
所以,我想知道第一个字符串和第二个字符串何时不在compareString中。
如何?
这应该能帮你。
一个词:
if (!string.Contains("One"))
两个词:
if (!(string.Contains("One") && string.Contains("Two")))
您应该将所有单词放入某种Collection或List中,然后这样调用它:
var searchFor = new List<string>();
searchFor.Add("pineapple");
searchFor.Add("mango");
bool containsAnySearchString = searchFor.Any(word => compareString.Contains(word));
如果你需要进行独立于案例或文化的搜索,你应该这样称呼它:
bool containsAnySearchString =
searchFor.Any(word => compareString.IndexOf
(word, StringComparison.InvariantCultureIgnoreCase >= 0);
因此您可以利用短路:
bool containsBoth = compareString.Contains(firstString) &&
compareString.Contains(secondString);
使用可枚举。包含函数:
var result =
!(compareString.Contains(firstString) || compareString.Contains(secondString));
bool isFirst = compareString.Contains(firstString);
bool isSecond = compareString.Contains(secondString );
如果要区分Mango
和Mangosteen
,请使用regexp选项。
var reg = new Regex(@"'b(pineapple|mango)'b",
RegexOptions.IgnoreCase | RegexOptions.Multiline);
if (!reg.Match(compareString).Success)
...
当一个未关联的单词包含另一个单词时,接受的答案和大多数其他答案将出现逻辑故障。例如";"低"中的"strong>";跟随"。这些是单独的单词,.Contains
和IndexOf
将在这些单词上失败。
字边界
需要说的是,一个单词必须独立,而不是在另一个单词中。处理这种情况的唯一方法是使用正则表达式并提供单词边界'b
规则来正确地隔离每个单词。
测试和示例
string first = "name";
var second = "low";
var sentance = "Follow your surname";
var ignorableWords = new List<string> { first, second };
以下是从其他答案中挑选出来的两个测试(以显示失败),然后是建议的答案。
// To work, there must be *NO* words that match.
ignorableWords.Any(word => sentance.Contains(word)); // Returns True (wrong)
ignorableWords.Any(word => // Returns True (wrong)
sentance.IndexOf(word,
StringComparison.InvariantCultureIgnoreCase) >= 0);
// Only one that returns False
ignorableWords.Any(word =>
Regex.IsMatch(sentance, @$"'b{word}'b", RegexOptions.IgnoreCase));
摘要
.Any(word =>Regex.IsMatch(sentance, @$"'b{word}'b", RegexOptions.IgnoreCase)
- 一对多单词对照
- 无内部字故障
- 忽略Case