.net 在C#中将字符串解析为ulong时出现格式异常的问题[输入字符串格式不正确]

umuewwlo  于 2023-03-20  发布在  .NET
关注(0)|答案(1)|浏览(266)

在我代码中,我为字符串变量分配了一个长值,当我试图解析它时,它抛出了一个异常

Unhandled exception. System.FormatException: Input string was not in a correct format.
   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at System.UInt64.Parse(String s)
   at Program.Main()
Command terminated by signal 6

我的代码在这里

string data = "‭‭071926809";
Console.WriteLine(ulong.Parse(data));

此外,我已经尝试了Tryparse,还检查了直接将值分配给Parse的第一个参数,如下所示,它工作正常

Console.WriteLine(ulong.Parse("071926809"));

它在处理异常时运行良好,但在这个例子中,它给变量赋值了,但我期待的是,如果我给字符串变量赋值了,一个已知的长整型或整型值,然后试图转换,为什么它仍然会给出异常,有人能告诉我吗?

pgky5nke

pgky5nke1#

字符串以两个不可见字符U+202D(从左到右重写)开头。您可以通过以下代码看到这一点:

string data = "‭‭071926809";
foreach (var c in data)
{
    Console.WriteLine("{0:X4}", (int)c);
}

结果:

202D
202D
0030
0037
0031
0039
0032
0036
0038
0030
0039

解决这个问题的最好方法是确保您的数据只包含数字。如果不可能,请在解析之前清除它,例如,如果您知道U+202D是唯一可能干扰的字符,data.Trim('\u202D')

相关问题