PDA

Просмотр полной версии : string -> Boolean


k0zer
30.04.2007, 19:10
Я не нашёл никакой функции типа parseXXX() для преобразования строки в булев тип. Boolean("xxx") тоже не работает.
Вопрос как преобразовать строку красиво, чтобы без if или ?:

etc
30.04.2007, 19:41
str = (str=="true");

k0zer
30.04.2007, 20:18
спасибо
а спец функции видимо нет, потому что должна иметься возможность выбора значения по умолчанию, если строка = не "true"/"false", а "абракадабра" или undefined

Kikasso
30.04.2007, 20:47
Boolean(str) работает. null, пустая строка и undefined - это ложь.
Все остальное чистая правда.
boo = ( str && str != "false");

etc
30.04.2007, 20:48
Спец. нету. Сами напишите.

Kikasso, я бы лучше проверял, если не true, то значит false, а у тебя false только если str равен false (строкой) или не существует.

Kikasso
30.04.2007, 21:15
__etc, для if-else подходит. Ну можно и добавить словечко:
function bool(str){ trace ( Boolean(str) && str != "false"); }
bool( s );
bool( "");
bool( "false" );
bool( false );
bool(0);
trace("------");
bool(true);
bool("1");
bool(1);
или
function bool(str){
trace (Boolean( str && str != "false"));
}

k0zer
30.04.2007, 21:30
Boolean(str) работает. null, пустая строка и undefined - это ложь.
Все остальное чистая правда.
boo = ( str && str != "false");
upd: тут недоработка, см. ниже
Ты это все к чему написал? По-моему очевидно, что я имел ввиду под "Boolean(str) не работает".
И зачем писать вот такое????
boo = ( str && str != "false");
после того как _etc уже дал простой код
bool = (str=="true");

Kikasso
30.04.2007, 21:35
Зачем писать такое? Потому что давайте посмотрим:
function bool(str){
trace( str == "true" );
}
bool( s );
bool( "");
bool( "false" );
bool( false );
bool(0);
trace("------");
bool("true");
bool(true);
bool("1");
bool(1);
Потом запустите проверку из моего последнего поста.Boolean(str) не работает
Работает, только не так, как вы ожидали:
http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001720.html

etc
30.04.2007, 21:40
Kikasso, для начала нужно было проверять лишь строковые значения. Ну и потом, как правило, если строка "true", то это true, а все остальное — false. Это и было, я так понимаю, условием задачи.

k0zer
30.04.2007, 21:42
Kikasso, считаешь на название темы внимание обращать не стоит?
это я про
bool(0);
bool(true);

когда даешь подобные листинги, хорошим тоном является в комментариях к строке писать что выдает на нее trace.


Работает, только не так, как вы ожидали:
http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001720.html

Похоже все-таки не очевидно, что я имел ввиду ))

iNils
30.04.2007, 21:50
Возможно стоит также подумать, об предварительном переводе строки в нижний регистр. Потому как "True" == "true", именно потому, что это строка.

Kikasso
30.04.2007, 21:50
Откуда берутся эти строковые значения, интересно? Наверняка приходят с сервера. Что правильнее передавать, "1" или "true"? Разница в 3 байта.
И "" или "false" - 5 байт сэкономлено.
Я бы еще сравнивал с "0", сейчас это не обрабатывается.
Похоже все-таки не очевидно, что я имел ввиду ))
Ну так сформулируйте, в конце концов.
Насчет листингов, так copy-paste и посмотреть.
iNils, хорошее замечание.

etc
30.04.2007, 22:02
bool = (str.toLowerCase()=='true');

Kikasso, не нужно решать иную задачу.