Собственно сабж..

Нравится

15 комментариев

Стандартная функция parseInt("123") подойдет? :)

Лабитек
Центр разработки приложений

scr_Utils функция DigitsFromString(Number)

Дуплетом :lol:

Лабитек
Центр разработки приложений

"Валерий Андрусик" написал:Стандартная функция parseInt("123") подойдет? :

В том то и дело, что она криво работает

"Александр Кудряшов" написал:scr_Utils функция DigitsFromString(Number)

Наоборот. Мне надо из строки число получить

А криво - это как? Можно на примере?

Лабитек
Центр разработки приложений

"Парфенов Евгений" написал:Наоборот. Мне надо из строки число получить

DigitsFromString оно и есть

"Александр Кудряшов" написал:DigitsFromString оно и есть

Результат функции в виде строки возвращается...
Хотя, возможно, можно так сделать:

var n = new Number(DigitsFromString("123"));

Лабитек
Центр разработки приложений

"Парфенов Евгений" написал:Валерий Андрусик пишет:

Стандартная функция parseInt("123") подойдет? :

В том то и дело, что она криво работает


Что именно криво? Возможно, Вы не учли, что иногда передавать второй параметр необходимо?

"Александр Кудряшов" написал:DigitsFromString оно и есть

Меня его код немного в замешательство привел.. Кажется что он возвращает стринг. ...

function DigitsFromString(Number) {
	var ValidChars = "0123456789";
	var Result = '';
	var Char;
 
	if (Number.length != 0) {
		for (var i = 0; i < Number.length; i++) {
			Char = Number.charAt(i);
			if (ValidChars.indexOf(Char) != -1) {
				Result += Char;
			}
		}
	}
	return Result;
}

Проверил все работает.. Спасибо

"Раловец Ольга" написал:Что именно криво? Возможно, Вы не учли, что иногда передавать второй параметр необходимо?

"Валерий Андрусик" написал:А криво - это как? Можно на примере?

Пожалуйста!!! Пример!!!

А, это особенность :)

Цифры с префиксом 0 считаются переданными в восьмеричной системе (судя по справке). Можно, как написала Ольга, вторым параметром передавать базу системы счисления (10). Тогда все корректно работает.

Лабитек
Центр разработки приложений

Евгений, функция работает корректно, Вы просто не учли следующего:
parseInt(numString, [radix])
numString
Required. A string to convert into a number.
radix
Optional. A value between 2 and 36 indicating the base of the number contained in numString. If not supplied, strings with a prefix of '0x' are considered hexadecimal and strings with a prefix of '0' are considered octal. All other strings are considered decimal. (http://msdn.microsoft.com/en-us/library/x53yedee%28VS.85%29.aspx)
В Вашем случае необходимо передавать основание, чтобы получить корректное значение.

Да, я уже разобрался. Спасибо. Теперь придется везде явно 10ку прописывать

Во многих случаях достаточно поделить любую строку на 1. Если строка принципиально преобразуема в число, тип изменится на числовой. Иначе будет NaN

	var a = '0076547.6787678';//тип  - строка
	a = a / 1; //преобразовали тип
	debugger;//Можно убедиться, тип у переменной "a" стал double, 
	//лишние нули исчезли.

"Будак Анатолий Васильевич" написал:Во многих случаях достаточно поделить любую строку на 1. Если строка принципиально преобразуема в число, тип изменится на числовой.

о как:smile: спасибо!

Показать все комментарии