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

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

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

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

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

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

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

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

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

Реализация удаления одинаковых слов на 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;

Удаляем одинаковые слова в строке, код на 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 ) );

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

#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;
}

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

Поделиться!
Tags: , ,

49.68MB | MySQL:51 | 0,299sec