C# 无法通过换行符将字符串拆分为数组(来自 StreamReader)
Posted
技术标签:
【中文标题】C# 无法通过换行符将字符串拆分为数组(来自 StreamReader)【英文标题】:C# can't split a string into an array by newline (from StreamReader) 【发布时间】:2020-07-06 03:30:06 【问题描述】:StreamReader login = new StreamReader("C:/Users/Me/Documents/logins.txt");
string ar = login.ReadToEnd();
string[] names = ar.Split("\r\n");
login.Close();
我正在从文件中读取一组登录信息,例如“用户名,密码”,然后是“usr,pwd”或其他换行符。我想通过在新行的开头拆分来将 txt 文件拆分为一组数组,但是“\r\n”似乎不起作用,出现错误“无法从字符串转换为字符” .我已经尝试过 Environment.Newline,但这也不起作用,并带有相同的错误消息。
【问题讨论】:
为什么不直接使用File.ReadAllLines
呢?
【参考方案1】:
不用处理流,只需使用File.ReadAllLines
string[] names = File.ReadAllLines("C:/Users/Me/Documents/logins.txt");
【讨论】:
谢谢!有人告诉我使用流,但我只是想知道,每个之间有什么区别? 不同之处在于File.ReadAllLines
基本上为您处理打开和关闭流以及读取行。你可以查看实现here【参考方案2】:
String.Split 需要一个数组或 char
或 string
值来拆分。您需要将代码更改为:
string[] names = ar.Split(new string[]"\r\n", StringSplitOptions.None);
【讨论】:
谢谢!现在工作正常。只是好奇,StringSplitOptions 是做什么的?为什么会有所不同? @EdwardPugh - 用于指定是否获取空行 (None
) 或是否应从结果数组中删除空行 (RemoveEmptyEntries
)【参考方案3】:
您可以像这样单独阅读每一行:
using (StreamReader reader = new StreamReader(pathToFile))
string line = reader.ReadLine();
这可能更可取,因为您不必依赖行返回类型来正确使用字符
【讨论】:
以上是关于C# 无法通过换行符将字符串拆分为数组(来自 StreamReader)的主要内容,如果未能解决你的问题,请参考以下文章