Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Определение цифр в строке (http://www.flasher.ru/forum/showthread.php?t=177848)

Alexmody 10.04.2012 11:10

Определение цифр в строке
 
Каким способом лучше определить, что в строке (String), находятся исключительно только цифры (могут быть со знаком минус). К примеру, среди вариантов: "reg123er", "-200", "name", "@name#" - нужно определить именно вариант "-200".

Sevak 10.04.2012 11:31

Код AS3:

if (str == Number(str)) {
trace("Это число")
}


elder_Nosferatu 10.04.2012 11:31

Код AS3:

str = "reg123er";
trace(isNaN(parseFloat(str))); // true
str = "-200";
trace(isNaN(parseFloat(str))); // false


anmelegov 10.04.2012 11:57

Код AS3:

if(Number(str)) trace("profit")


Alexmody 10.04.2012 12:21

Спасибо, интересные варианты.
anmelegov
Получается, что NaN воспринимается if, как лож, а любое число, даже отрицательное (кроме нуля) воспринимается if, как истина. Очень лаконично!

-De- 10.04.2012 12:37

Всякие Number(str) и parseFloat(str) страдают тем, что считают, что что-то типа "0garbage" - это нормальное число 0.
Регексп по идее лучше всего (мне лень смотреть как оно на флэш). Там надо ещё подумать, должно ли оно матчить что-то типа "-3.5e-6" (это валидное число).

elder_Nosferatu 10.04.2012 12:46

Цитата:

Сообщение от anmelegov (Сообщение 1074059)
Код AS3:

if(Number(str)) trace("profit")


А что если str="0"?

Alexmody 10.04.2012 12:51

-De-
>>что что-то типа "0garbage" - это нормальное число 0.
Код AS3:

var st:String = "0garbage";
trace( Number(st));//выдает NaN

elder_Nosferatu
Код AS3:

var st:String = "0";
trace( Number(st));//выдает число 0

Код AS3:

var st:String = "0";
if (Number(st)) {
  trace( "BOO");
}// сообщение не выводится, результат получается, что как бы это не число, это минус,
//но в моем случае ноль не нужен. К слову, если 0.1, то сообщение выводится

Получается, что если нужен 0, то лучше использовать способы описанные в первых двух постах.

-De- 10.04.2012 13:10

Значит наврал про Number, каюсь %)
У Sevak кстати вариант интересный (но оно ниасилит варианты типа "0.000000" и "1000000"/"1e7").

anmelegov 10.04.2012 13:16

Код AS3:

if(Number(str) || str='0') trace("profit")



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

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