Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Удаление повторяющихся слов в тексте (https://javascript.ru/forum/css-html/29911-udalenie-povtoryayushhikhsya-slov-v-tekste.html)

Zlyden 16.07.2012 19:36

Удаление повторяющихся слов в тексте
 
Нужно удалять повторяющиеся слова вне зависимости от регистра. Создал такое выражение:
Код:

a=a.replace(/([^a-zА-яёЁ]|^)([a-zА-яёЁ]+) (\2)([^a-zA-ZА-яёЁ]|$)/gi,"$1"+"$2"+"$4")
Для примера "При при проверке были были найдены повторяющиеся слова" он удаляет дубликат "были", но напрочь игнорирует "При при" из-за разницы в регистре. Что делать?

Deff 16.07.2012 19:45

Zlyden,
Ни наю - у меня норма, хотя код кривоватый *нун создание массивов всего словарного запаса предложения и повторной проверке на совпадения
var str='При при проверке были были найдены повторяющиеся слова';
alert(str.replace(/([^a-zА-яёЁ]|^)([a-zА-яёЁ]+) (\2)([^a-zA-ZА-яёЁ]|$)/gi,"$1"+"$2"+"$4"))

devote 16.07.2012 20:03

var a = "При при при при при при при при проверке были были найдены повторяющиеся слова слова";

function removeRepeatedWords( str ) {
    var lastWord = '';
    return str.replace( /([^\s]+)(\s|$)/g, function( all, w, e ){
        return lastWord.toLowerCase() == w.toLowerCase() ? '' : ( lastWord = w ) + e;
    });
}

alert( removeRepeatedWords( a ) );

Zlyden 16.07.2012 20:52

Deff, спасибо. Оказалось, у меня предыдущий код заменял пробел на неразрывной, и из-за этого не срабатывало.


Часовой пояс GMT +3, время: 22:20.