Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнение двух одинаковых строк - false (https://javascript.ru/forum/misc/53357-sravnenie-dvukh-odinakovykh-strok-false.html)

kweb 30.01.2015 19:02

Сравнение двух одинаковых строк - false
 
Сравниваю 2 строки одинакового содержания
1 строка "Y" - приходит как ответ сервера на ajax запрос
2 строка тоже "Y" как переменная в скрипте, который принимает запрос. Оба значения точно строки typeof() - string, значения строк визуально одинаковы! Но при сравнении выдают false!

Проблема в том, что 1 строка("Y").length = 3 (то что приходит с сервера)
2 строка("Y").length = 1 (переменная)

Как их сравнить в true? С сервера приходит строка со скрытыми символами юникода? Как этого избежать или как ее обработать?

Aetae 30.01.2015 20:11

Примените encodeURIComponent() к приходящей строке и посмотрите что там вам довесило. Само собой строки разной длины не равны. Надо по-хорошему править серверный скрипт. По-плохому - очищать уже пришедшую строку от лишнего.

ksa 31.01.2015 21:37

Цитата:

Сообщение от kweb
Проблема в том, что 1 строка("Y").length = 3 (то что приходит с сервера)
2 строка("Y").length = 1 (переменная)

То мобуть просто возврат каретки и перевод строки... Просто серверный прогер нажал вконце ентер, вот ты и страдаешь... Пусть он удалит их из своего файла...

ruslan_mart 01.02.2015 05:52

Может BOM?

SV0L0CH 02.02.2015 03:39

Чтобы узнать точно, надо запустить это:
[].map.call("Y", function(c){return c.charCodeAt(0);})

Только подставить получаемую строку.

kweb 02.02.2015 12:53

Цитата:

Сообщение от SV0L0CH (Сообщение 354534)
Чтобы узнать точно, надо запустить это:
[].map.call("Y", function(c){return c.charCodeAt(0);})

Только подставить получаемую строку.

Спасибо!
Получил следующий массив: 13,10,89, откуда видно, что перед символом "Y" имеется перевод строки и возврат каретки.

Можно ли их как-то убрать?

ksa 02.02.2015 14:44

Цитата:

Сообщение от kweb
Можно ли их как-то убрать?

Разумеется. :yes:
Но убирать таки лучше на сервере, а не на клиенте...

kweb 02.02.2015 14:53

Убрал так:
myServerString.trim( ) == "Y"

Спасибо за советы!

kweb 02.02.2015 14:54

Цитата:

Сообщение от ksa (Сообщение 354612)
Разумеется. :yes:
Но убирать таки лучше на сервере, а не на клиенте...

Так на сервере все элементарно

if(...){
die("Y");
}

откуда там спецсимволы?

ksa 02.02.2015 15:12

Цитата:

Сообщение от kweb
откуда там спецсимволы?

Они именно от туда. ;)

Я в твоем серверном языке неразбираюсь... Т.ч. подсказать не смогу. :no:


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