-3

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

就像是:

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

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

4

3 回答 3

4

您可以使用string.Split()which 将根据空格拆分字符串,然后您可以检查要比较的字符串的计数,看看它是否等于或大于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 将为您提供字符串中计数为两倍或更多的单词的数组。

于 2013-04-14T08:41:16.277 回答
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
于 2013-04-14T08:46:46.197 回答
1

如果要检查要使用两次的任何单词,请使用该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);
于 2013-04-14T08:55:51.520 回答