У меня есть строки, содержащие тысячи разделителей, однако ни одна функция преобразования строки в число не хочет ее правильно использовать (с использованием JavaScript). Я думаю о "подготовке" строки, удалив все разделители тысяч, оставив все остальное нетронутым и позволив функциям Number
/ parseInt
/ parseFloat
(я доволен своим поведением в противном случае) решать остальное. Но похоже, что я понятия не имею, какой RegExp может это сделать!
Приветствуются и лучшие идеи!
Извините, ответы просветили меня, насколько плохо сформулирован этот вопрос. То, что я пытаюсь достичь, это: 1) удалить разделители тысяч, только если они есть, но 2) не беспокоить исходную строку, чтобы я получал NaN в случаях недопустимых чисел.
JavaScript ограничен английской локалью для синтаксического анализа, поэтому для простоты предположим, что разделителем тысяч является ',' (естественно, он никогда не соответствует десятичному разделителю в любой локали, поэтому переход на любую другую локаль не должен вызывать проблема)
Теперь о функциях синтаксического анализа:
parseFloat('1023.95BARGAIN BYTES!') // parseXXX functions just "gives up" on invalid chars and returns 1023.95
Number('1023.95BARGAIN BYTES!') // while Number constructor behaves "strictly" and will return NaN
Иногда я использую rhw свободную, иногда строгую. Я хочу выяснить, как лучше всего подготовить строку для обеих функций.
О действительности цифр:
'1,023.99 '
- это хорошо сформированное английское число, и удаление всех запятых приведет к правильному результату.
' 1,0,2,3.99 '
не работает, однако общее удаление запятой даст '1023.99'
, что вряд ли будет правильным результатом.