C# 将字符串数组的元素解析为int
正如问题所说,我试图将字符串数组的一个元素解析为int变量。尽管代码在语法方面是正确的,但当我尝试运行它时,会收到以下错误消息 生成内容时出现错误1 FormatException:输入字符串的格式不正确。 位于System.Number.StringToNumber(字符串str、NumberStyles选项、NumberBuffer&Number、NumberFormatInfo信息、布尔解析十进制) 在System.Number.ParseInt32(字符串s、NumberStyles样式、NumberFormatInfo信息) 在System.Int32.Parse处(字符串s) 在C:\Users\Darren\Documents\Enders\TileContent\Tiles\TileLayerProcessor.cs中的TileContent.Tiles.TileLayerProcessor.Process(XmlDocument输入,ContentProcessor上下文)处:第75行 下面是导致以下问题的代码C# 将字符串数组的元素解析为int,c#,string,parsing,integer,C#,String,Parsing,Integer,正如问题所说,我试图将字符串数组的一个元素解析为int变量。尽管代码在语法方面是正确的,但当我尝试运行它时,会收到以下错误消息 生成内容时出现错误1 FormatException:输入字符串的格式不正确。 位于System.Number.StringToNumber(字符串str、NumberStyles选项、NumberBuffer&Number、NumberFormatInfo信息、布尔解析十进制) 在System.Number.ParseInt32(字符串s、NumberStyles样式
foreach (string line in lines)
{
string realLine = line.Trim();
if (string.IsNullOrEmpty(line))
continue;
string[] cells = realLine.Split(' ');
for (int x = 0; x < width; x++)
{
int cellIndex = int.Parse(cells[x]);
layer.Layout[row, x] = cellIndex;
}
foreach(行中的字符串行)
{
string realLine=line.Trim();
if(string.IsNullOrEmpty(行))
继续;
string[]cells=realLine.Split(“”);
对于(int x=0;x
发生错误的原因是无法将单元格[x]
解析为Int32。请尝试在string[]cells=realLine.Split(“”)之后调试和检查单元格
您说您正试图解析其中一个元素,但您的for
循环正在解析所有元素
向我们提供行
变量的值,这样就更容易理解您要做的事情
此外,还可以使用int.TryParse()
要确定值是否在int
中,而不抛出错误..很难说没有看到输入,但假设所有行只包含有效的int值,我猜行中有多个空格分隔数字。在这种情况下,Split 将包含一些无法转换为int的空字符串。在这种情况下,请使用:
string[] cells = realLine.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
如果使用简单int解析,请确保提供标识区域性源的IFormatProvider。如果您有区域性不变形式的数字,请使用以下代码:
int cellIndex = int.Parse(cells[x], CultureInfo.InvariantCulture);
现在它可能无法解决您的问题,但始终传递CultureInfo参数(这也可以用作注释)是很好的。顺便说一句,如果我是您,我将使用TryParse()相反…令人尴尬的是,这是由于我对信息做了一次标签操作,使信息的读取方式变得混乱。它的价值是什么?