C# не может разбить строку на массив по новой строке (из StreamReader) - PullRequest
0 голосов
/ 25 марта 2020
StreamReader login = new StreamReader("C:/Users/Me/Documents/logins.txt");
            string ar = login.ReadToEnd();
            string[] names = ar.Split("\r\n");
login.Close();

Я читаю из файла набор логинов, например, "username, password", затем новую строку как "usr, pwd" или что-то еще. Я хочу разбить txt-файл на набор массивов, разделив его в начале новой строки, но «\ r \ n», похоже, не работает, из-за ошибки «невозможно преобразовать строку в символ» , Я пробовал Environment.Newline, но он тоже не работает, с тем же сообщением об ошибке.

Ответы [ 3 ]

2 голосов
/ 25 марта 2020

Вместо того, чтобы иметь дело с потоком, просто используйте File.ReadAllLines

string[] names = File.ReadAllLines("C:/Users/Me/Documents/logins.txt");
1 голос
/ 25 марта 2020

Вы можете прочитать каждую строку по отдельности следующим образом:

using (StreamReader reader = new StreamReader(pathToFile)) {
    string line = reader.ReadLine();
}

Это может быть предпочтительнее, так как вам не нужно полагаться на тип возврата строки, чтобы быть корректным, используя char

1 голос
/ 25 марта 2020

String.Split требуется массив или eiter char или string значений для разделения. Вам нужно изменить код на:

string[] names = ar.Split(new string[]{"\r\n"}, StringSplitOptions.None);
...