2015-08-12 4 views
-5

Скажем, у меня есть строка, которая содержит много слов, таких как:Найти повторяющиеся слова в строке и удалить дубликаты

string SetenceString= "red white black white green yellow red red black white" 

Я хочу, чтобы удалить все dupplicates и вернуть каждое слово только один раз:

SetenceString= "red white black green yellow" 

Как я могу сделать это с помощью C#? Вся помощь приветствуется.

+0

Также пожалуйста, поиск по StackOverflow перед публикацией. Я не могу поверить, что многие из уже существующих дублирующихся вопросов не возникали, когда вы ввели это. – Chris

ответ

3

Вы даже не сказали нам, что вы пробовали, но ..

string SetenceString = "red white black white green yellow red red black white"; 
var result = string.Join(" ", SetenceString.Split(' ').Distinct()); 
Console.WriteLine(result); 

Выход будет;

красный белый черный зеленый желтый

Но эй, как это работает именно?

  • Мы разделили нашу строку с пробелом, чтобы получить все ваши слова в массиве строк.
  • Мы использовали Distinct() method, чтобы получить только отдельные слова в нашем массиве строк.
  • И мы использовали string.Join, чтобы объединить все эти различные слова с пробелом.
+0

Спасибо, я приму свой ответ. Это очень хорошо объяснено! – Gloria

+0

спасибо большое !!! –

6

Если ваши слова всегда разделены:

String.Join(" ", SetenceString.Split(' ').Distinct()) 

Иначе вы должны лучше использовать регулярные выражения

1
string SetenceString = "red white black white green yellow red red black white"; 
    string[] data = SetenceString.Split(' '); 
    HashSet<string> set = new HashSet<string>(); 
    for (int i = 0; i < data.Length; i++) 
    { 
     set.Add(data[i]); 
    } 

set varible теперь содержит только уникальные элементы

Смежные вопросы