我正在制作一个应用程序,我必须比较特定单词的两个字符串
例如
string a="abc";
string b="abcController";
我必须比较a
和b
以匹配abc
我正在使用Equals
或CompareTo
,但这些无效
答案 0 :(得分:5)
以最简单的方式,您可以使用the Contains
method:
var a = "abc";
var b = "abcSOMDH";
var c = b.Contains(a);
此方法执行序数(区分大小写和 文化不敏感)比较。搜索从第一个开始 这个字符串的字符位置,并持续到最后一个 角色位置。
答案 1 :(得分:3)
string str1 = "abc";
string str2 = "abcController";
if(str2.Contains(str1))
...
答案 2 :(得分:3)
使用:
string a = "abc";
string b = "abcdefsdfs";
if (a.Contains(b) || b.Contains(a))
//DO SOMETHING
答案 3 :(得分:2)
使用string.Contains
方法
b.Contains(a)
答案 4 :(得分:1)
Contains
的替代方案是IndexOf
var a = "abc";
var b = "abcSOMDH";
var c = b.IndexOf(a) >= 0; // returns TRUE if b occurs in a
var d = b.IndexOf(a, StringComparison.OrdinalIgnoreCase); // same but case insensitive
来自MSDN的说明:
Reports the zero-based index of the first occurrence of one or more characters,
or the first occurrence of a string, within this string. The method returns -1 if
the character or string is not found in this instance.
答案 5 :(得分:1)
快速评论上面的答案:使用ToLowerInvariant()或ToUpperInvariant()不是一个好主意。在比较之前,这两个调用都必须创建全新的字符串,大写或小写。
相反,使用接受IEqualityComparer的Contains()方法的重载,如下所示:
string stringA; stringA.Contains(stringB, StringComparer.CurrentCultureIgnoreCase);
这将进行不区分大小写的比较,而不分配内存并复制字符串。