Самый простой способ разбить строку на новые строки в .NET? - PullRequest
719 голосов
/ 10 октября 2009

Мне нужно разбить строку на новые строки в .NET, и единственный известный мне способ разбить строки - это метод Split . Однако это не позволит мне (легко) разбить на новую строку, так как лучше это сделать?

Ответы [ 15 ]

1 голос
/ 10 октября 2009
string[] lines = text.Split(
  Environment.NewLine.ToCharArray(), 
  StringSplitOptions.RemoveEmptyStrings);

Опция RemoveEmptyStrings гарантирует, что у вас не будет пустых записей из-за \ n после \ r

(Изменить, чтобы отразить комментарии :) Обратите внимание, что он также будет отбрасывать подлинные пустые строки в тексте. Обычно это то, чего я хочу, но это может быть не вашим требованием.

0 голосов
/ 08 июля 2017

Очень просто, на самом деле.

VB.NET:

Private Function SplitOnNewLine(input as String) As String
    Return input.Split(Environment.NewLine)
End Function

C #:

string splitOnNewLine(string input)
{
    return input.split(environment.newline);
}
0 голосов
/ 29 марта 2014
using System.IO;

string textToSplit;

if (textToSplit != null)
{
    List<string> lines = new List<string>();
    using (StringReader reader = new StringReader(textToSplit))
    {
        for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
        {
            lines.Add(line);
        }
    }
}
0 голосов
/ 04 октября 2012

Глупый ответ: напишите во временный файл, чтобы вы могли использовать почтенный File.ReadLines

var s = "Hello\r\nWorld";
var path = Path.GetTempFileName();
using (var writer = new StreamWriter(path))
{
    writer.Write(s);
}
var lines = File.ReadLines(path);
0 голосов
/ 10 октября 2009

Я не знал о Environment.Newline, но, думаю, это очень хорошее решение.

Моя попытка была бы:

        string str = "Test Me\r\nTest Me\nTest Me";
        var splitted = str.Split('\n').Select(s => s.Trim()).ToArray();

Дополнительный .Trim удаляет все \ r или \ n, которые могут все еще присутствовать (например, в окнах, но разделение строки символами новой строки os x). Вероятно, не самый быстрый метод.

EDIT:

Как правильно отмечено в комментариях, это также удаляет любые пробелы в начале строки или перед новой строкой. Если вам нужно сохранить этот пробел, используйте один из других вариантов.

...