如何使用不同的NumberStyles作为输入(解析)和输出(ToString)样式?

时间:2016-02-01 09:58:52

标签: .net vb.net

我有一个包含数字的字符串是一些特定的格式。我有另一个元素的样式,我想要的是将此字符串转换为其他格式字符串。例如:

myStyle As System.Globalization.NumberStyles = NumberStyles.AllowThousands
myString As String = "9,000,000"
myResult As String = ???????

我希望myResult字符串为NumberStyles.Number样式。即myResult="9000000"

请注意,样式可以是任何不只是AllowThousand的样式...是否有人知道任何内置的Sub在样式之间进行转换?

1 个答案:

答案 0 :(得分:1)

NumberStyles枚举可用作ParseTryParse方法的参数(f.e。Decimal.TryParse)。它们无法在ToString中使用。

如果您想控制号码转换为String的方式,请使用适当的NumberFormatInfo或格式字符串(customstandard)。例如:

Dim inputStyle As System.Globalization.NumberStyles = NumberStyles.AllowThousands
Dim outputStyle As System.Globalization.NumberStyles = NumberStyles.Number
Dim myString As String = "9,000,000"
Dim result As String
Dim dec As Decimal
If Decimal.TryParse(myString, inputStyle, NumberFormatInfo.CurrentInfo, dec) Then
    Dim format As NumberFormatInfo = DirectCast(NumberFormatInfo.CurrentInfo.Clone(), NumberFormatInfo)
    format.NumberGroupSeparator = ""
    result = dec.ToString(format)
End If

请注意,只有当前文化使用,作为群组分隔符时(例如"de-DE""en-UK"),才能使用上述内容。

在这种情况下,简单的Decimal.ToString会得到相同的结果:

If Decimal.TryParse(myString, inputStyle, NumberFormatInfo.CurrentInfo, dec) Then
   result = dec.ToString()
End If