Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串数组的元素解析为int_C#_String_Parsing_Integer - Fatal编程技术网

C# 将字符串数组的元素解析为int

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样式

正如问题所说,我试图将字符串数组的一个元素解析为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行

下面是导致以下问题的代码

                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()相反…

令人尴尬的是,这是由于我对信息做了一次标签操作,使信息的读取方式变得混乱。

它的价值是什么?