假设我有两个字符串。NameIs
和Nam
。现在我可以检查一个字符串是否与另一个字符串相同:
If (string1 == string2)
但它在这里不起作用,因为字符串不一样。但是它的一部分是相同的。我想要实现的是检查我的主字符串是否有给出的字符串的任何部分...我遇到了String.StartWith
和EndWith
方法,但在那里,我需要指定字符串可能开始或结束的内容但我不能,因为字符串可以是任何东西(这就是为什么在开始时,我说“假设” )。
所以我的第一个问题是如何实现这一目标?我不想要任何step = to = step指令但至少有一点方向:)
然而,如果我越过那个,仍然有一个缺点,那就是Case-Sensitive
问题。我遇到过this但是我似乎无法想象所需的实现我的情况是因为我需要先解决第一个问题。
我应该如何实现这些目标?
答案 0 :(得分:3)
对于序数比较,您可以使用
ActiveStorage::Blob
如果您需要比较不区分大小写,则可以执行
str1.Contains(str2);
请注意,您可以在扩展方法中隐藏后者,例如
str1.IndexOf(str2, StringComparison.OrdinalIgnoreCase) >= 0;
答案 1 :(得分:0)
if (stringValue.ToLower().Contains(anotherString.ToLower())) {
// Do Work //
}
请记住在进行包含比较时检查字符串是否为空,否则您将获得ArgumentNullException ..
答案 2 :(得分:0)
最简单的方法是:
a = a?.ToLowerInvariant();
b = b?.ToLowerInvariant();
if(a==null || b==null || a.Contains(b) || b.Contains(a))
{
//do stuff
}
为什么 null 传播到 true ?因为如果任何变量是 null ,它肯定会包含在其他变量中。其他两个规范仅适用于非空条目。
答案 3 :(得分:0)
要检查主字符串中是否包含子字符串,并忽略区分大小写,请执行此操作,它是一个带有两个字符串参数的布尔函数:
public bool DoesStringExistInsideMainString(string mainString, string subString)
{
return mainString.ToLower().Contains(subString.ToLower());
}