Как удалить все одинаковые слова в тексте

В очередной раз приветствую тебя, дорогой читатель блога Softodom. В этом посте речь пойдет о такой простой проблеме как автоматической удаление слов в тексте или удаление одинаковых слов в тексте. Задача достаточно простая и тривиальная, но, как выяснилось, у многих людей она вызывает трудности в момент реализации и поэтому было решено написать это пособие для начинающих. Если интересует, то добро пожаловать по кат.

Удалить определенные слова из текста

Представим на мгновение, что у вас есть большой массив текста в котором надо быстро, что то подправить, а именно удалить некоторые повторяющиеся слова. Как это сделать? На самом деле это проще просто т.к. практически во всех текстовых процессорах (программы для работы с размеченными текстовыми документами, наподобие MS Word) и текстовых редакторах (программы для работы с обычным текстом, пример Windows Блокнот) есть такая базовая функция как поиск и замена при помощи которой можно задать слова для автоматического поиска и заменить их на необходимые сущности, это могут быть как пробелы, так и другие слова. Вызывается эта опция так же одинаково во всех программах при помощи горячих клавиш Ctrl+H. После нажатия данной комбинации кнопок перед вами предстанет окно для поиска слов. Просто вводите туда нужное слово и если его надо просто удалить из текста, то поле «Заменить на:» оставляете пустым, что программа автоматически заменяла эти слова на пустоту, т.е. удаляла их из текста. Все это работает за доли секунды, так, что это не заставит вас ждать.

Заменить слова в тексте

Для замены слов проделываем все те же действия, что описаны в предыдущем абзаце, но в поле «Заменить на:» вводим строку для замены, таким образом все найденные слова в тексте по заданному ваши шаблону будут автоматически заменять на последовательность символов заданных во втором поле.

В качестве инструментов для подобной работы с текстом рекомендую использовать программы: MS Office Word, OpenOffice Writer, Windows Блокнот, Notepad++.

Как видите, это совсем простейшие задачи для современных программ работающих с текстом и решить их не составит труда.

Так же сделать подобное можно и своими руками по средствам написания своего программного кода реализующего решения задачи. Ниже приведен код, который выполнит действия необходимые для удаления всех одинаковых слов в заданном тексте.

Реализация удаления одинаковых слов на Delphi

[delphi]
procedure TForm1.Button1Click(Sender: TObject);
var i, j : integer;
begin
i := Memo1.Lines.Count-1;
while i>=0 do begin
j := Memo1.Lines.IndexOf(Memo1.Lines[i]);
while (j>=0) and (j<i) and (i>=0) do begin
Dec(i);
Memo1.Lines.Delete(j);
if i>=0 then
j := Memo1.Lines.IndexOf(Memo1.Lines[i]);
end;
Dec(i);
end;
end;
[/delphi]

Удаляем одинаковые слова в строке, код на Java

[java]
final String string = "Test this is the test test test";
final Set<String> set = new LinkedHashSet<String>();
final String[] stringArray = string.split( " " );
set.addAll( Arrays.asList( stringArray ) );
final String[] outputArray = new String[set.size()];
set.toArray( outputArray );
System.out.println( "outputArray" + Arrays.toString( outputArray ) );
[/java]

Альтернативный вариант на C++ для удаления одинаковых слов

[c language=»++»]
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
int main()
{
map<string,int> count;
string word;

ifstream fileIn( "test.txt" );

while ( !fileIn.eof() )
{
fileIn>>word;
count[word] += 1;
}
fileIn.close();
for (map<std::string,int>::iterator p = count.begin(); p != count.end(); p++)
cout<<p->first<<‘\t'<<p->second<<‘\n’;
int i;
cin>>i;
}
[/c]

На этом думаю все по данной теме, если, что то не понятно — пишите в комментариях. Спасибо за внимание.