C#字符串比较

时间:2012-01-26 11:10:08

标签: c#

我正在制作一个应用程序,我必须比较特定单词的两个字符串

例如

string a="abc";
string b="abcController";

我必须比较ab以匹配abc

我正在使用EqualsCompareTo,但这些无效

6 个答案:

答案 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);

这将进行不区分大小写的比较,而不分配内存并复制字符串。