将逗号或点字符串转换为单个
Convert comma or dot string to single
我想将诸如“21.7”和“21,7”之类的字符串转换为单个字符串。
我正在使用
Dim s As String = "21.7"
'or Dim s As String = "21,7"
Dim sng As Single = Single.Parse(s)
我以为它会同时接受“,”和“。”作为小数点分隔符,但它不是因为(取决于 Windows 中的小数点分隔符设置),我也得到 217.
是否有满足我需要的内置函数?
您实际上一次只能使用一种文化,例如:
Dim englishUS = "21.7"
Dim englishGB = "21,7"
Const EnUSCultureName = "en-US"
Const EnGBCulterName = "en-GB"
Dim us As Single = Single.Parse(englishUS, New Globalization.CultureInfo(EnUSCultureName))
Dim gb As Single = Single.Parse(englishUS, New Globalization.CultureInfo(EnGBCulterName))
正如您所发现的,对于某些使用逗号的语言环境,单个点不被视为小数点分隔符,而对于其他语言环境则相反。
您的问题的可能解决方案是先尝试使用 CurrentCulture 进行转换,如果失败,再尝试使用 InvariantCulture
Dim s = "21.7"
Dim sng
if Not Single.TryParse(s, NumberStyles.AllowDecimalPoint,
CultureInfo.CurrentCulture, sng) Then
if Not Single.TryParse(s, NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture, sng) Then
Console.WriteLine("Error conversion")
return
End If
End If
Console.WriteLine(sng)
我想将诸如“21.7”和“21,7”之类的字符串转换为单个字符串。
我正在使用
Dim s As String = "21.7"
'or Dim s As String = "21,7"
Dim sng As Single = Single.Parse(s)
我以为它会同时接受“,”和“。”作为小数点分隔符,但它不是因为(取决于 Windows 中的小数点分隔符设置),我也得到 217.
是否有满足我需要的内置函数?
您实际上一次只能使用一种文化,例如:
Dim englishUS = "21.7"
Dim englishGB = "21,7"
Const EnUSCultureName = "en-US"
Const EnGBCulterName = "en-GB"
Dim us As Single = Single.Parse(englishUS, New Globalization.CultureInfo(EnUSCultureName))
Dim gb As Single = Single.Parse(englishUS, New Globalization.CultureInfo(EnGBCulterName))
正如您所发现的,对于某些使用逗号的语言环境,单个点不被视为小数点分隔符,而对于其他语言环境则相反。
您的问题的可能解决方案是先尝试使用 CurrentCulture 进行转换,如果失败,再尝试使用 InvariantCulture
Dim s = "21.7"
Dim sng
if Not Single.TryParse(s, NumberStyles.AllowDecimalPoint,
CultureInfo.CurrentCulture, sng) Then
if Not Single.TryParse(s, NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture, sng) Then
Console.WriteLine("Error conversion")
return
End If
End If
Console.WriteLine(sng)