我在我的一个列表中使用 SPFieldCurrency 列。
我的自定义代码接收一个字符串值作为参数,其中包含 GetFormattedValue() 方法返回的字段值。
现在我的问题是我的方法收到的值中包含货币符号,例如 10 美元、10 日元、10 欧元等。
由于我的代码中存在货币符号,当我对这些值执行 Double.TryParse() 时,它会失败。
如何在不知道货币文化信息的情况下从 SPFieldCurrency 对象的显示字符串值中提取数值?
我在我的一个列表中使用 SPFieldCurrency 列。
我的自定义代码接收一个字符串值作为参数,其中包含 GetFormattedValue() 方法返回的字段值。
现在我的问题是我的方法收到的值中包含货币符号,例如 10 美元、10 日元、10 欧元等。
由于我的代码中存在货币符号,当我对这些值执行 Double.TryParse() 时,它会失败。
如何在不知道货币文化信息的情况下从 SPFieldCurrency 对象的显示字符串值中提取数值?
知道了。问题是使用 NumberStyles.Any。这将删除所有货币符号。
我使用 Double.TryParse(valueString, NumberStyles.Any, CultureInfo.CurrentCulture.NumberFormat, out value)
它对我有用。谢谢
“您可以通过创建 NumberFormatInfo 实例并在其上设置属性来处理字符串的特定方面来做到这一点。例如,您希望将 CurrencySymbol 属性设置为“$”,将 NumberDecimalDigits 属性设置为 2,等等。”
我猜你唯一的问题是该领域有多种货币......
好吧,如果你像这样简单地直接解析值:
double myvalue;
bool success = double.TryParse(properties.ListItem["MyFieldName"].ToString(), out myvalue);
您将获得没有货币符号的价值。
但是您的问题有些模棱两可,是从 SharePoint 项中获取双精度值的问题,还是如何处理代码中的格式化字符串的问题?