Для ясности я сделал еще один ответ.
Я сделал эти два метода расширения:
ReadLines
позволит вам читать по одной строке за раз, не разбирая всю строку вмассив.ReadAllLines
проанализирует всю строку в массив.
В вашем случае вы можете использовать его следующим образом:
var lines = source.ReadAllLines();
Я взял имена из File.ReadLines
и File.ReadAllLines
поэтому они должны соответствовать остальной части .Net Framework.
В качестве примечания к комментариям к моему другому ответу я проверил код StringReader.ReadLine
, и он позаботился как о \r\n
, так и о\n
- но не старый Mac OS и т. Д. (Это не важно).
public static class StringExtensions
{
public static IEnumerable<string> ReadLines(this string data)
{
using (var sr = new StringReader(data))
{
string line;
while ((line = sr.ReadLine()) != null)
yield return line;
}
}
public static string[] ReadAllLines(this string data)
{
var res = new List<string>();
using (var sr = new StringReader(data))
{
string line;
while ((line = sr.ReadLine()) != null)
res.Add(line);
}
return res.ToArray();
}
}
(ReadAllLines
можно было бы сделать с помощью ReadLines.ToArray
, но я решил, что лишние несколько строккода был лучше, чем завернутый IEnumerable
, который занимает некоторое время обработки)