Как проверить пользовательский ввод валюты - PullRequest
0 голосов
/ 04 июня 2018

Так что я в настоящее время разрабатываю веб-сайт, который поддерживает много языков.У меня есть поле ввода, где пользователь может ввести количество валюты внутри.Мне нужна функция для проверки, если этот вход является законным или нет.Однако, потому что разные страны используют разные форматы чисел.например: Англия использует «.»для десятичной дроби и ',' для разделителя тысяч.Где в Германии используют «,» для десятичной и «.»за тысячу разделителей.Французы используют ',' для десятичного и (пробел) для разделителя тысяч ... А для китайского / японского языка они даже не используют число "1-9" для описания числа

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

number = userinput()
if "de":
return deValidator(number)
if "fr":
return frValidator(number)
if "en":
return enValidator(number)
if "zh":
return zhValidator(number)

Однако есть ли более разумный способ сделать это ??я ищу что-то вроде уже созданного валидатора / библиотеки или более простой подход к решению этой проблемы без необходимости написания другого валидатора для другого языка

1 Ответ

0 голосов
/ 06 июня 2018

Вы можете использовать метод toLocaleString(), чтобы помочь создать валидатор;Метод toLocaleString() возвращает строку с чувствительным к языку представлением числа.

const number = 123456.789;

// German uses comma as decimal separator and period for thousands
console.log(number.toLocaleString('de-DE'));
// → 123.456,789

// Arabic in most Arabic speaking countries uses Eastern Arabic digits
console.log(number.toLocaleString('ar-EG'));
// → ١٢٣٤٥٦٫٧٨٩

// India uses thousands/lakh/crore separators
console.log(number.toLocaleString('en-IN'));
// → 1,23,456.789

// the nu extension key requests a numbering system, e.g. Chinese decimal
console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec'));
// → 一二三,四五六.七八九

// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
console.log(number.toLocaleString(['ban', 'id']));
// → 123.456,789

С помощью этого метода вы также можете форматировать числа с информацией о валюте:

const number = 10000000;

number.toLocaleString('it-IT', {style: 'currency', currency: 'EUR'})
// → 10.000.000,00 €

number.toLocaleString('it-IT', {style: 'currency', currency: 'USD'})
// → 10.000.000,00 US$

number.toLocaleString('en-US', {style: 'currency', currency: 'EUR'})
// → €10,000,000.00

number.toLocaleString('en-US', {style: 'currency', currency: 'USD'})
// → $10,000,000.00

Для получения дополнительной информациидетали: toLocaleString https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

...