Как конвертировать формат числа с английского на итальянский с VBScript? - PullRequest
2 голосов
/ 15 октября 2019

Мне нужно преобразовать английскую нумерацию в итальянскую.

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

price = Replace(price, ".", ",")

Проблема в том, что когда яслишком большие числа меняются несколько раз, и появляются неправильные числа.

Например:

Английская версия: 3450,108
После замены: 3450108 (но это неверно)
Правильный формат: 3,450,102

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

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

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

Option Explicit
Const decimalplaces = 3
Dim price: price = 3450.108 'This is the raw value from your data source.

Call SetLocale("en-gb")
Call WScript.Echo("English (UK) price: " & FormatNumber(price, decimalplaces))
Call SetLocale("it-it")
Call WScript.Echo("Italian price: " & FormatNumber(price, decimalplaces))

Вывод:

English (UK) price: 3,450.108
Italian price: 3.450,108
2 голосов
/ 15 октября 2019

Если вы хотите поменять местами 2 символа разделителя, вам нужно использовать временный символ для второго, иначе вы не сможете различить исходный второй разделитель и замененный первый.

price = Replace(price, ".", "_")
price = Replace(price, ",", ".")
price = Replace(price, "_", ",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...