具有看起来像“ 1.900,00”的字符串。如何将字符串格式化为十进制1900?
使用:
decimal.TryParse("1.900,00", out var vkp)
会给我一个错误的结果。我该如何处理?
以下是在线C#编译器的URL:https://dotnetfiddle.net/B5EyyC
答案 0 :(得分:4)
您可以尝试使用将CultureInfo
用作千位分隔符并将'.'
用作十进制分隔符的','
(例如"de-DE"
)。还有合适的NumberStyles
。
string input = "1.900,00";
decimal.TryParse(input,
NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint,
CultureInfo.GetCultureInfo("de-DE"), out var output);
您甚至可以创建自己的NumberFormatInfo实例,您可以在其中任意选择指定NumberDecimalSeparator
和NumberGroupSeparator
。
答案 1 :(得分:0)
尝试一下:
string s = "1.900,00";
s = s.Substring(0, s.LastIndexOf(",")).Replace(".", "") + "." + s.Substring(s.LastIndexOf(",") + 1);
decimal vkp = 0;
decimal.TryParse(s, out vkp);
答案 2 :(得分:0)
我想您可以尝试以下操作:
string number = "1.900,00";
decimal.TryParse(number.Split(",")[0].Replace(".",""), out var vkp);
如果需要更简单的检查,可以尝试创建一个函数来检查字符串是否包含','字符。
public static bool ToDouble(string s, out double d)
{
if (s.Contains(","))
return double.TryParse(s.Split(",")[0].Replace(".", ""), out d);
return double.TryParse(s, out d);
}
还可以通过以下方式获取本地化设置的小数点分隔符:
string dsep = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator
答案 3 :(得分:0)
//using System.Globalization;
NumberStyles style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands;
CultureInfo culture = CultureInfo.CreateSpecificCulture("es-ES");
Decimal vkp;
Decimal.TryParse("1.900,00", style, culture, out vkp);