Конвертировать валюту в десятичную в VB.NET

#vb.net

#vb.net

Вопрос:

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

Пример: 12 500,50 долларов США -> 12500,50

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

Как я могу это сделать?

Комментарии:

1. Вы хотите сказать, что вам нужна помощь в разборе десятичного числа из строки, которая всегда начинается с «US $»?

2. Это именно то, что я говорю. Вы можете мне помочь?

Ответ №1:

Я не знаю наверняка об этом, но вы можете попробовать:

 Dim NewString As String = Replace(Replace(TextBox1.Text, "US$", ""), ",", "")
Dim Currency As Decimal = CDec(NewString)

'Just to check if it works.
MessageBox.Show(Currency)
 

Ответ №2:

Для начала не используйте FormatCurrency . Вызовите ToString и передайте «c» в качестве спецификатора формата. Обратной операцией было бы вызвать Decimal.Parse или Decimal.TryParse и указать форматирование валюты.

Комментарии:

1. Нет необходимости говорить «спасибо», и это на самом деле не рекомендуется. Комментарии следует оставлять только для того, что добавляет к цели ответа на вопрос. Однако вам следует принять ответ, если он действительно отвечает на ваш вопрос, чтобы другие могли видеть, что он полезен.

Ответ №3:

Используйте числовые стили

     Dim test As String = "US$12,500.50"
    Dim testAsNum As Decimal

    Dim ci As New Globalization.CultureInfo(Globalization.CultureInfo.CurrentCulture.LCID)
    ci.NumberFormat.CurrencySymbol = "US$"

    Dim ns As Globalization.NumberStyles = Globalization.NumberStyles.AllowCurrencySymbol Or _
        Globalization.NumberStyles.AllowDecimalPoint Or _
        Globalization.NumberStyles.AllowThousands

    If Decimal.TryParse(test, ns, ci, testAsNum) Then
        Stop
    Else
        Stop
    End If