【问题标题】:C# can't split a string into an array by newline (from StreamReader)C# 无法通过换行符将字符串拆分为数组(来自 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,但这也不起作用,并带有相同的错误消息。

【问题讨论】:

标签: c# arrays string split char


【解决方案1】:

不用处理流,只需使用File.ReadAllLines

string[] names = File.ReadAllLines("C:/Users/Me/Documents/logins.txt");

【讨论】:

  • 谢谢!有人告诉我使用流,但我只是想知道,每个之间有什么区别?
  • 不同之处在于File.ReadAllLines 基本上为您处理打开和关闭流以及读取行。你可以查看实现here
【解决方案2】:

String.Split 需要一个数组或 charstring 值来拆分。您需要将代码更改为:

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();
}

这可能更可取,因为您不必依赖行返回类型来正确使用字符

【讨论】:

    猜你喜欢
    • 2014-02-26
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2017-08-29
    • 1970-01-01
    • 2020-11-07
    • 2014-07-26
    相关资源
    最近更新 更多