文化 nb-NO 有“”(空格)作为千位分隔符(数字组分隔符、货币组分隔符等),但也很常见键入“。” (时期)。小数点分隔符为“,”。
如何分配多个千位分隔符?
如果您知道分隔符是什么或知道一个列表,请使用Int.TryParse并传入代表分隔符的不同区域性。例如:
using System.Globalization;
...
string number; // Contains number to parse
int parsedNumber;
List<CultureInfo> cultures = new List<CultureInfo>()
{
Cultureinfo.InvariantCulture,
new CultureInfo("en-US"),
... // Insert other cultures here
};
CultureInfo matchingCulture = cultures.FirstOrDefault(cultureInfo =>
Int.TryParse(number, out parsedNumber,
NumberStyles.AllowThousands, cultureInfo));
if(matchingCulture != null)
{
// parsedNumber contains the parsed number and matchingCulture contains
// the culture that parsed it
}
如果分隔符没有由不同的区域性表示,请考虑使用简单的 string.Replace() 将已知分隔符列表替换为单个已知分隔符,例如逗号。请注意,这可能会出现问题,例如,由于某些国家/地区的惯例冲突,千位分隔符与小数点一起使用。
如果找不到内置解决方案,您可以随时将可能不需要的字符替换为,
空字符串,然后解析数字。