2013-04-14 173 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 
相關問題