2013-04-14 42 views
-3

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

喜欢的东西:

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

我只得到在运行时的原始字符串,它不是必然是字符串中的第一批单词。

+2

您是否试过_anything_? –

+0

“My String My String”和“”“'和'”MyString MyString abcd“'怎么办? –

+7

'MyString NotMyString'包含两次相同的*字符 - 它只包含两次相同的*字。你需要在你的要求中更加精确。 –

回答

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); 
+0

您的输入不是有效的xml –

+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会为您提供字符串中计数为两次或更多的单词的数组。

+0

整洁的解决方案 - 但是不会像“MyStringMyString”或“MyString adbadMyString”这样的字符串失败吗? – Tim

+0

@Tim,我相信他在搜索单词, - – Habib

+0

问题不是搜索输入字符串,而是搜索重复单词。 –

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 
相关问题