【发布时间】:2018-09-26 10:02:37
【问题描述】:
我有以下代码。
string inputStringg = "120000";
int numValuee = 0;
Console.WriteLine("Some Sample Name : " + numValuee.ToString());
try
{
numValuee = Int32.Parse(inputStringg); // throws exception
}
catch (Exception ex)
{
throw;
}
Console.WriteLine("Some Sample Name : " + numValuee.ToString());
string inputString1 = "120000";
int numValue1 = 0;
Console.WriteLine("Some Sample Name : " + numValue1.ToString());
try
{
numValue1 = Int32.Parse(inputString1); // no exception here
}
catch (Exception ex)
{
throw;
}
Console.WriteLine("Some Sample Name : " + numValue1.ToString());
这里numValuee = Int32.Parse(inputStringg);
抛出异常Input string was not in a correct format.
而且这个numValue1 = Int32.Parse(inputString1); 不会抛出异常。
我知道这是一个愚蠢的问题,但不知道发生了什么。
有人请指导我。提前谢谢。
【问题讨论】:
-
您的第一个字符串包含一个不可见字符,U+202A - “从左到右嵌入”。你应该弄清楚为什么你的字符串中有这个,并修复它。
-
为了帮助发现这类问题,我经常检查所涉及字符串的长度 -
Console.WriteLine(inputStringg.Length); -
string codes = string.Join(" ", inputStringg.Select(c => ((int) c).ToString("x4"))); Debug.Write(codes);你会看到202a 0031 0032 0030 0030 0030 0030 -
而不是
int numValue1 = 0; Console.WriteLine("Some Sample Name : " + numValue1.ToString()); try { numValue1 = Int32.Parse(inputString1); } catch (Exception ex) { throw; }你可以这样做:int numValue1 = 0; int.TryParse( inputString1, out numValue1 ); -
不,他们不是。我将您的问题中的每一个都复制到csharpindepth.com/Articles/General/Unicode.aspx#explorer 并看到了不同之处。看看每个的长度,你应该会看到不同之处。现在,如果您说实际代码中的字符串与您的问题中的字符串不匹配,那将很难为您提供帮助。
标签: c# .net string int typeconverter