Показать сообщение отдельно
  #11 (permalink)  
Старый 27.08.2013, 15:19
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

var text1 = "Мама мыла очень кривую раму";
var text2 = "Мама долго мыла кривую раму";
        var arr1 = text1.split(' ');
        var arr2 = text2.split(' ');

        var result1 = [], result2 = [];

        for (var i = 0; i < arr1.length; i++) {

            if (arr2[i] == undefined) {

                for (var j = i; j < arr1.length; j++) {
                    arr1[j] = "<span class='changedText'>" + arr1[j] + "</span>";
                }
                break;

            }

            if (arr1[i] != arr2[i]) {

                if (findInArray(arr1[i], arr2)) {

                    arr1.splice(i, 0, arr1[i]);
                    arr2[i] = "<span class='changedText'>" + arr2[i] + "</span>";

                    if (result1[result1.length - 1] != arr1[i])
                        result1.push(arr1[i]);

                    result2.push(arr2[i]);
                } else {

                    arr2.splice(i, 0, arr2[i]);
                    arr1[i] = "<span class='changedText'>" + arr1[i] + "</span>";
                    result1.push(arr1[i]);
                }

            } else {
                if (result1[result1.length - 1] != arr1[i])
                    result1.push(arr1[i]);
                result2.push(arr2[i]);
            }
        }

        function findInArray (element, array) {
            var find = false;

            for (var i = 0; i < array.length; i++) {
                if (array[i] == element)
                    find = true;
            }

            return find;
        }

alert(result1.join(' '));
alert(result2.join(' '));


Вроде работает, но есть косяки:

Не придумал что делать если новый текст длиннее исходного (я пробегаюсь только по исходному массиву).

keen,
Как Вы и говорили косяки со знаками препинания. Вроде это можно сделать регулярными выражениями, но в них я не силен, как бы мне выделить в отдельные элементы массива знаки препинания так, чтобы потом оно нормально склеилось в строку и не потерять при этом знаки?

И ещё, мой алгоритм не выводит в первом массиве 2 одинаковых слова

Последний раз редактировалось tsigel, 27.08.2013 в 16:13.
Ответить с цитированием