如何检查字符串是否包含两次相同的单词?
类似的东西:
" <Item> MyString <Item> <Item> MyString <Item> "
→true
" <Item> MyString <Item> <Item> NotMyString <Item> "
→false
" <Item> MyString <Item> <Fact> MyString <Fact> "
→false
我只在运行时获取原始字符串,它不一定是字符串中的第一批单词。
答案 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
将是一组key
和value
对,其中键是单词,值是输入字符串中的值。如果你想找到不止一次出现的单词:
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);