2016-12-20 2 views
0

В Javascript я хочу представить номер пользователю в том формате, который они понимают, чтобы редактировать его. Следовательно, системе необходимо будет проанализировать международный номер.парсинг локализованных строк номера javascript

Это потому, что, если они находятся во Франции, они, вероятно, предпочтут изменить число «1.000.000,5», тогда как если они находятся в Австралии, они, вероятно, предпочтут изменить число «1 000 000,5» или "1,000,000.5". (Чтобы уточнить сферу действия вопроса: мой код не должен знать об отдельных правилах той или иной локали. Использует ли какая-либо страна в качестве десятичной точки? Я не знаю, и я не хочу знаю.)

Современный Javascript предоставляет API Intl.NumberFormat, но он, похоже, имеет дело с производством чисел, а не для их разбора.

Как разобрать локализованный номер?

+0

это выглядит как [этот вопрос] (http://stackoverflow.com/questions/4951738/culture-sensitive-parsefloat-function-in-javascript), а также [этот вопрос] (HTTP : //stackoverflow.com/questions/12694455/javascript-parsefloat-in-different-cultures). Если вам не нравится какой-либо из этих ответов, вам может понадобиться решить проблему дома. Если вы это сделаете, обязательно поставьте его на github. Кажется, это общая проблема! – chester

+0

Возможно, вы захотите проверить [* Globalize.js *] (https://github.com/globalizejs/globalize#where-to-use-it), в котором есть число форматирования и парсера (между прочим). Также см. [* Интернационализация (форматирование чисел «num.toLocaleString()»), не работающая для chrome *] (http://stackoverflow.com/questions/8906567/internationalizationnumber-formatting-num-tolocalestring-not-working-for-c/37161329 # 37161329). – RobG

ответ

0

Я не думаю, что это возможно без предварительной настройки формата и зная, что вы конвертируете в/из.

Например, как функция может различать 9,521 в США и во Франции? В США это более девяти тысяч, во Франции - девять с половиной (и немного).

Я рекомендую вам держать список регулярных выражений х для различных форматов, которые будут показаны (и позволяющими на входе) и использовать подходящую для разбора номера, когда вы читаете это.

0

Правила быть где-то, и разумное место в вашей программе, или вы можете использовать внешнюю библиотеку, если она существует. Чтобы ответить на ваш вопрос. Число разбивается на группы по три человека и составляет тысячи, хотя в некоторых странах они разбиваются на другие группы; например Япония они разбивают число на группы. Вот сценарий для разбивки номера на группы из трех с заданной системой интервалов.

https://repl.it/Eu7I/2

Смежные вопросы