我正在尝试读取用文件中的空格分隔的数字。
using (var streamReader = new StreamReader("save.txt", Encoding.UTF8))
{
list = streamReader.ReadToEnd().Split(new char[] { ' ' }, 1).Select(n => int.Parse(n)).ToList();
}
当我尝试运行此代码时,我会在System.FormatException
获得int.Parse(n)
n
字符串,其中包含整个文件的内容。
只要我明白为什么我得到这个例外,我不知道为什么Split()
方法不起作用?
答案 0 :(得分:4)
Split(new char[] { ' ' }, 1)
中有一个不必要的1参数,这意味着只返回一个元素。使用RemoveEmptyEntries
选项也更安全。您还可以借助File.ReadAllText
:
File.ReadAllText("path")
.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select(n => int.Parse(n))
.ToList();
答案 1 :(得分:2)
在用于分割字符串的字符列表中有一个1,删除它可以工作。
list = streamReader.ReadToEnd()
.Split(new char[] { ' ' })
.Select(n => int.Parse(n)).ToList();
如果你离开1,那么Split的结果将只是一个元素的数组 例如,如果您有此输入字符串
string input = "1 2 3 4 5";
string[] result = input.Split(new char[] {' '}, 1);
结果将是这样的数组
result.Length == 1; // true
result[0] == "1 2 3 4 5"; // true
当然传递字符串
int.Parse("1 2 3 4 5")
给出了上面的错误。
答案 2 :(得分:1)
我一直很喜欢File.ReadAllLines() - 它会回到.Net 2.0,我不需要写任何我的onw代码。