检查字符串是否包含两次相同的字符

时间:2013-04-14 08:38:21

标签: c# string

如何检查字符串是否包含两次相同的单词?

类似的东西:

  • " <Item> MyString <Item> <Item> MyString <Item> "true
  • " <Item> MyString <Item> <Item> NotMyString <Item> "false
  • " <Item> MyString <Item> <Fact> MyString <Fact> "false

我只在运行时获取原始字符串,它不一定是字符串中的第一批单词。

3 个答案:

答案 0 :(得分:4)

您可以使用string.Split()根据空格分割字符串,然后您可以检查要比较的字符串的计数,看它是否等于或大于2

string strToCompare = "MyString";
string str = " MyString MyString ";

if(str.Split().Count(r=> r == strToCompare) >= 2)
   //exists twice or more

编辑:由于此问题现已编辑完毕。您可以尝试以下方法:

var duplicateArray = str.Split()
                        .GroupBy(r=> r) 
                        .Where(t=> t.Count() >= 2)
                        .ToArray();
上面的Tha会给你那些字符串中的计数是两次或更多的单词的数组。

答案 1 :(得分:1)

string str = " MyString MyString ";

var result = str.Split(new[]{' '}, StringSplitOptions.RemoveEmptyEntries)
                .GroupBy(word => word)
                .Any(grp => grp.Count() > 1);

Console.WriteLine (result); // will print true

答案 2 :(得分:0)

如果要检查要使用两次的任何单词,请使用Split函数将字符串转换为单词,然后使用Group获取计数:

string input = "MyString MyString";
var words = input.Split().GroupBy(s => s).ToDictionary(
                                                  g => g.Key, 
                                                  g => g.Count()
                                          );

字典words将是一组keyvalue对,其中键是单词,值是输入字符串中的值。如果你想找到不止一次出现的单词:

bool hasDuplicateWords = words.Any(w => w.Value > 1);

要查找多次出现的单词:

var duplicateWords = words.Where(w => w.Value > 1);

编辑:在编辑你的问题后,似乎你没有解析简单的字符串,而是解析XML代码。您应该使用XML解析器来处理XML,如下所示(未在编辑器中检查):

var input = "<Item> MyString <Item> <Item> MyString <Item>";
var xml = XElement.Parse(input);

bool hasDuplicateWords = xml.Children
                            .GroupBy(x => x.Name)
                            .Any(x => x.Count() > 1);