ASP.Net CType无法转换"£;1234.56“;到小数-需要影响的详细列表
这是一个常见的问题,它有几个常见的答案。 我的问题是,它们都不起作用 代码完全是典型的,从CType到十进制,由于全球化设置而失败ASP.Net CType无法转换"£;1234.56“;到小数-需要影响的详细列表,asp.net,vb.net,Asp.net,Vb.net,这是一个常见的问题,它有几个常见的答案。 我的问题是,它们都不起作用 代码完全是典型的,从CType到十进制,由于全球化设置而失败 Console.write( CType("£1,234.56", Decimal) ) >>> Conversion from string "£1,234.56" to type 'Decimal' is not valid. 我的问题是,在多次尝试修复后,这台特定的计算机没有转换该值 到目前为止,没有特别的绝望顺序: 区域设置。确保他们(英
Console.write( CType("£1,234.56", Decimal) )
>>> Conversion from string "£1,234.56" to type 'Decimal' is not valid.
我的问题是,在多次尝试修复后,这台特定的计算机没有转换该值
到目前为止,没有特别的绝望顺序:
Option Infer On
Imports System.Globalization
Module Module1
Sub Main()
Dim s = "£1,234.56"
Dim d = Decimal.Parse(s, NumberStyles.Currency, New CultureInfo("en-GB"))
Console.WriteLine(d) ' outputs 1234.56
s = "$1,234.56"
d = Decimal.Parse(s, NumberStyles.Currency, New CultureInfo("en-US"))
Console.WriteLine(d) ' outputs 1234.56
If Decimal.TryParse(s, NumberStyles.Currency, New CultureInfo("en-GB"), d) Then
Console.WriteLine(d)
Else
Console.WriteLine("Could not parse.")
End If
Console.ReadLine()
End Sub
End Module
较差的方法是删除不属于某个数字的所有内容:
Dim s = "£1,234.56"
Dim re As New Regex("[^0-9,.]")
Dim t = re.Replace(s, "")
Console.WriteLine(CType(t, Decimal)) ' outputs 1234.56
它没有那么好,因为您无法检查货币符号是否是您期望的货币符号。您尝试过允许设置不同参数的Decimal.Parse吗?谢谢这些提示。在更改代码之前,我正在环境中寻找一些东西。所以,如果你有什么东西在那边,我错过了给我喊一声。但是如果我们不能解决这个问题,我会按照你的建议修改代码。=)