Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Два разных массива из двух одинаковых стрингов (http://www.flasher.ru/forum/showthread.php?t=101985)

gesecond 06.10.2007 16:53

Два разных массива из двух одинаковых стрингов
 
Как можно сравнить два массива, если

Код:

t = 0;
k = 0;
arr1 = new Array();
arr2 = new Array();
primer.text = "\n\tone\n\ttwo";
perem2 = "\n\tone\n\ttwo";
perem1 = primer.text;
function simpl() {
        for (i=0; i<perem1.length; i++) {
                if (perem1.charAt(i) != "\n" && perem1.charAt(i) != "\t") {
                        arr1[t] = perem1.charAt(i);
                        t++;
                }
                if (perem2.charAt(i) != "\n" && perem2.charAt(i) != "\t") {
                        arr2[k] = perem2.charAt(i);
                        k++;
                }
        }
}
simpl();
trace(arr1);
//output ,o,n,e,
//,t,w,o
trace(arr2);
//output o,n,e,t,w,o

два "одинаковых" стринга дают разные массивы из-за "\n"

DarkLight 06.10.2007 17:09

С помощью операций String.split - Array.join избавиться от мешающих символов перед преобразованием в массив и сравнением, либо в функции сравнения создать массивы без этих символов из исходных, и сравнивать их.

Mnilionic 06.10.2007 17:10

Код:

if (perem2 == perem1) {
        trace("стринги одинаковые");
} else {
        trace("видимо стринги неодинаковые");
}


gesecond 06.10.2007 17:19

Вот только пользователь будет менять input текст - одни символы на другие. А разбивка на абзацы должна оставаться и общее число символов не меняется. Так что сравнивать переменные стринги нельзя - только элементы массивов.

Пробовал и String.split, но оно как-то неадекватно реагирует на \n

Mnilionic 06.10.2007 17:29

добавте к вашему коду проверку на \r и, в принципе будет работать.

Код:

primer.text = "\n\tone\n\ttwo";
perem2 = "\n\tone\n\ttwo";
perem1 = primer.text;

function strsplit(str){
        var result:Array = [];
        for (var i=0; i<str.length; i++) {
                if (str.charAt(i) != "\n" && str.charAt(i) != "\t" && str.charAt(i) != "\r") {
                        result.push(str.charAt(i));
                }
        }
        return result;
}

trace(strsplit(perem2))
trace(strsplit(perem1))


gesecond 06.10.2007 17:35

Ура! Работает! А что такое \r ?

О, сообразил. Спасибо за ответ

etc 06.10.2007 20:26

gesecond в следующий раз за неумение редактировать посты для добавления мысли буду наказывать.


Часовой пояс GMT +4, время: 16:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.