Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как определить какого типа данные в строке (https://javascript.ru/forum/misc/13620-kak-opredelit-kakogo-tipa-dannye-v-stroke.html)

den9000 06.12.2010 18:18

Как определить какого типа данные в строке
 
В строке могут быть дата, целое число, вещественное число, строке.
Как определить, какого типа данные в строке?

monolithed 06.12.2010 18:21

alert(typeof new Date()); //object
alert(new Date() instanceof Date) //true
alert([]['constructor']); //Array (только не использовать в такой нотации)

B@rmaley.e><e 06.12.2010 18:33

В строке может быть только строка. Как Вы интерпретируете эти данные - это уже Ваше дело.

dmitriymar 06.12.2010 19:24

пробовать сложить содержимое строки с числом. если число не изменилось то в строке не число

B@rmaley.e><e 06.12.2010 19:57

Цитата:

Сообщение от dmitriymar
если число не изменилось

Результат сложения строки и числа - NaN.
alert([5 + +'5', 5 + +'5.1', 5 + +'Hi!'].join('\n'))

dmitriymar 06.12.2010 21:05

ну хорошо проверять тип у числа через typeof если остаётся числом то число. хотя наверное можно проверять и 2 слагаемое но тут вопрос если оно значение получило от строковой хоть и числовое будет по ходу строка на выходе-значит первый вариант. если первое после сложения число то и второе число

den9000 07.12.2010 09:57

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 82579)
В строке может быть только строка. Как Вы интерпретируете эти данные - это уже Ваше дело.

Именно поэтому и возник вопрос. typeof, естественно, всегда возвращает, что строка.

B@rmaley.e><e 07.12.2010 10:57

Проверить на число можно с помощью isNaN:
function isNumber(s){
    return !isNaN(s) ? s + ' - число' : s + ' - не число';
}
var str1 = '5',
    str2 = '5.3223',
    str3 = '5e-1',
    str4 = '0x32',
    str5 = '5d';
alert([isNumber(str1), isNumber(str2), isNumber(str3), isNumber(str4), isNumber(str5)].join('\n'))

Дату - регулярными выражениями.


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