2015-06-18 2 views
1

Я ищу способ получения десятичных и тысяч разделителей из объекта NumberFormat.Javascript получает десятичный и разделитель тысяч из NumberFormat

var de = new Intl.NumberFormat('de-DE'); 

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

+0

Вы уверены, что не ищете ['toLocaleString()'] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString)? – Andy

ответ

0

Здесь функция JS, которая будет возвращать отформатирован

function customNumberFormat(num){ 
    var parts = (''+ (num<0?-num:num)).split("."), s=parts[0], i=L= s.length, o='',c; 
    while(i--){ o = (i==0?'':((L-i)%3?'':','))+s.charAt(i) +o } 
    return (num<0?'-':'') + o + (parts[1] ? '.' + parts[1] : ''); 
} 
+0

Можете ли вы объяснить, что именно делает эта функция? –

1

Кажется, вы можете избежать делать разбор себя:

Intl.NumberFormat('de-CH').v8Parse(
    Intl.NumberFormat('de-CH').format(1000) // => 1'000 
) // => 1000 

Но это звучит очень хром конкретных :)

Но если Я был вами, я бы избегал синтаксического анализа локализованных чисел, представленных как строки чисел, если можно.

+0

Ничего себе это было бы очень хорошо, но мы должны ждать более широкой поддержки браузера. – user2047861

+0

Да, было бы лучше не анализировать строки на номера, но иногда на стороне клиента нам нужно знать, какие данные введены пользователем. – user2047861

+0

ну, не решает это? – djfm

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