C# C输入字符串的格式不正确

C# C输入字符串的格式不正确,c#,parsing,text,text-files,C#,Parsing,Text,Text Files,我意识到这是一个经常重复的问题,但我和其他20个问题一样读过,找不到答案 我试图解析一个文本文件,在第一行得到一个字符串不正确的异常。该文件位于Unity的TextAsset中,因此为file.text。此操作将以字符串形式返回文件内容 第[0]行被正确读取到15,Debug.Log在第4行返回2,因此拆分后没有多余的字符 代码: 这是同一个文件,其中显示了空格字符: 我不知道如何粘贴,所以这只是Word的一个屏幕截图。您可以使用正则表达式确保字符串中不包含非数字 List<List<

我意识到这是一个经常重复的问题,但我和其他20个问题一样读过,找不到答案

我试图解析一个文本文件,在第一行得到一个字符串不正确的异常。该文件位于Unity的TextAsset中,因此为file.text。此操作将以字符串形式返回文件内容

第[0]行被正确读取到15,Debug.Log在第4行返回2,因此拆分后没有多余的字符

代码:

这是同一个文件,其中显示了空格字符:


我不知道如何粘贴,所以这只是Word的一个屏幕截图。

您可以使用正则表达式确保字符串中不包含非数字

List<List<int>> lines = File.ReadLines(filename)
                        .Select(line => Regex.Matches(line, @"\d+")
                        .Cast<Match>()
                        .Select(m => int.Parse(m.Value)).ToList())
                        .ToList();

如何读取该文件?请使用int.Parselines[0]进行尝试。Trim@Eser不幸的是,特里姆没有work@DanielA.White我正在使用Unity Text Asset读取文件注意,循环中存在索引超出数组边界的问题。我得到一个错误,读取行未定义。我让它与我的代码的一部分一起以ReadAllLine方式工作,以进一步分割行。我想避免在字符串中使用文件名,但我想现在必须这样做。谢谢
15
15
2   0   0   3   0   0   0   2   0   0   0   3   0   0   2
0   1   0   0   0   4   0   0   0   4   0   0   0   1   0
0   0   1   0   0   0   3   0   3   0   0   0   1   0   0
3   0   0   1   0   0   0   3   0   0   0   1   0   0   3
0   4   0   0   1   0   0   0   0   0   1   0   0   0   0
0   0   3   0   0   4   0   0   0   4   0   0   0   4   0
0   0   0   0   0   0   3   0   3   0   0   0   3   0   0
2   0   0   3   0   0   0   1   0   0   0   3   0   0   2
0   0   3   0   0   0   3   0   3   0   0   0   3   0   0
0   4   0   0   0   4   0   0   0   4   0   0   0   4   0
0   0   0   0   1   0   0   0   0   0   1   0   0   0   0
3   0   0   1   0   0   0   3   0   0   0   1   0   0   3
0   0   1   0   0   0   3   0   3   0   0   0   1   0   0
0   1   0   0   0   4   0   0   0   4   0   0   0   1   0
2   0   0   0   0   0   0   2   0   0   0   0   0   0   2
#0  1   2   3   4   5   6   7   8   9   10  11  12  13  14

# 1 - DW
# 2 - TW
# 3 - DL
# 4 - TL
List<List<int>> lines = File.ReadLines(filename)
                        .Select(line => Regex.Matches(line, @"\d+")
                        .Cast<Match>()
                        .Select(m => int.Parse(m.Value)).ToList())
                        .ToList();