如何使用C#比较两个字符串?

3
我需要处理一种情况,我不想将字符串的总长度与另一个字符串进行比较。
例如:
string MainString = "Deanna Ecker";

string SearchString = "Ecker Designs";

int value = MainString.IndexOf(SearchString);

这里是整个字符串搜索。但我需要在MainString中找到任何单词,而不是整个字符串。

请告诉我如何实现这一点。


1
按空格拆分字符串,然后逐个搜索拆分后的每个部分。 - Kamil Budziewski
提供的答案可以解决你的问题。如果你也对像“apple”和“apples”或“aple”这样的匹配词感兴趣,可以参考http://en.wikipedia.org/wiki/Levenshtein_distance。 - Exceptyon
3个回答

8
如果大小写不敏感的话,你可以通过空格将两个字符串分割,然后取两个列表的交集以查看是否存在匹配项:
var foundWords = MainString.Split(' ').Intersect(SearchString.Split(' '));

如果你只想知道单词是否被找到:

var isMatch = MainString.Split(' ').Intersect(SearchString.Split(' ')).Any();

1
你可以将字符串转换为字符数组,然后通过循环搜索每个字符,例如:
public bool MatchString(string first,string second)
{
  char[] ch1=first.ToCharArray();
  char[] ch2=second.ToCharArray();
  bool match=false;
  for(int i=0 ; i<ch1.length ; i++)
   {
      for(int j=0 ; j<ch2.length ; j++)
       {
             if(ch2[j]==ch[i])
              {
                match=true;
                break;
              } 
       }
   }
 return match;
}

0
尝试一下:var wordMatch = MainString.Split(' ').Intersect(SearchString.Split(' ')).Any();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接