我想知道如何在C#中实现对字符串的严格解析。
具体来说,我想要求字符串只包含数字(以特定于文化的格式),而不包含其他字符。
"1.0" -> 1.0
"1.5 " -> fail
" 1.5" -> fail
" 1,5" -> fail (if culture is with ".")
"1,5" -> fail
干杯!
答案 0 :(得分:4)
Int32.Parse
方法接受覆盖您提及的某些情况的标记。在NumberStyles
枚举上查看into MSDN here。此外,它接受特定于文化的格式信息。
答案 1 :(得分:2)
查看Parse
,TryParse
和int
类型的float
/ double
方法。他们有overloads,允许指定CultureInfo
并允许限制接受的数字格式:
string value = "1345,978";
NumberStyles style = NumberStyles.AllowDecimalPoint;
CultureInfo culture = CultureInfo.CreateSpecificCulture("fr-FR");
double number;
if (double.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
答案 2 :(得分:0)
TryParse专门允许在数字Double.TryParse reference之前和之后使用空格,因此除非您明确使用NumberStyles,否则它对您的要求不够严格。