在.NET中的換行符上拆分字符串的最簡單方法?

我須要在.NET中將字符串拆分爲換行符,我知道拆分字符串的惟一方法是使用Split方法。 可是,這不容許我(輕鬆)拆分換行符,那麼最好的方法是什麼? 正則表達式


#1樓

對於字符串變量s數組

s.Split(new string[]{Environment.NewLine},StringSplitOptions.None)

這使用了您的環境對行結尾的定義。 在Windows上,行結尾是CR-LF(回車,換行)或C#的轉義字符\\r\\nspa

這是一個可靠的解決方案,由於若是你用String.Join從新組合這些行,這等於你的原始字符串: code

var lines = s.Split(new string[]{Environment.NewLine},StringSplitOptions.None);
var reconstituted = String.Join(Environment.NewLine,lines);
Debug.Assert(s==reconstituted);

什麼不應作: 字符串

  • 使用StringSplitOptions.RemoveEmptyEntries ,由於這會破壞標記,例如Markdown,其中空行具備語法目的。
  • 拆分分隔符new char[]{Environment.NewLine} ,由於在Windows上,這將爲每一個新行建立一個空字符串元素。

#2樓

愚蠢的回答:寫一個臨時文件,這樣你就能夠使用古老的File.ReadLines get

var s = "Hello\r\nWorld";
var path = Path.GetTempFileName();
using (var writer = new StreamWriter(path))
{
    writer.Write(s);
}
var lines = File.ReadLines(path);

#3樓

使用StringReader怎麼樣? input

using (System.IO.StringReader reader = new System.IO.StringReader(input)) {
    string line = reader.ReadLine();
}

#4樓

正則表達式也是一個選項: string

private string[] SplitStringByLineFeed(string inpString)
    {
        string[] locResult = Regex.Split(inpString, "[\r\n]+");
        return locResult;
    }

#5樓

要拆分字符串,您須要使用帶有字符串數組的重載: it

string[] lines = theText.Split(
    new[] { Environment.NewLine },
    StringSplitOptions.None
);

編輯:
若是要在文本中處理不一樣類型的換行符,能夠使用匹配多個字符串的功能。 這將在任何類型的換行符上正確分割,並在文本中保留空行和間距: io

string[] lines = theText.Split(
    new[] { "\r\n", "\r", "\n" },
    StringSplitOptions.None
);
相關文章
相關標籤/搜索