C#如何分段?

时间:2012-03-12 16:01:50

标签: c# streamreader text-files

所以我知道一个段落是char 10 + char 13 我这样做:

streamreader sr = new streamreader();
string s = sr.ReadToEnd();
string s1 = s.Replace((char)10, "*");
string s2 = s1.Replace((char)13, "*");

现在它将段落改为两个**但是如何拆分2个字符?任何人都可以选择拆分段落吗?

  1. 轻松分割段落的方式 OR
  2. 以两个字符分割的方式

5 个答案:

答案 0 :(得分:4)

string doc = "line1\r\nline2\r\nline3";
var docLines = doc.Split(new string[] { "\r\n" }, System.StringSplitOptions.None);

Alliteratively你可以使用Environment.NewLine ......这将保持标准。

var docLines = doc.Split(new string[] { Environment.NewLine }, System.StringSplitOptions.None);

答案 1 :(得分:3)

假设您的意思是ASCII cr + lf(13 + 10),只需使用StreamReader.ReadLine()

答案 2 :(得分:2)

你试过Regex吗? Windows使用\r(13)后面的\n(10)作为行分隔符,因此您将获得行。但是如果你想要至少由一个空行分隔的文本块,你可以试试这个:

 string inputString = sr.ReadToEnd();

 string[] paragraphs = Regex.Split(inputString , "(\r\n){2,}");

答案 3 :(得分:1)

请参阅string.Split(string[], StringSplitOption)

var result = s2.Split(new []{"**"}, StringSplitOption.RemoveEmptyEntries)

您也可以使用Environment.NewLine进行操作,而无需将其转换为**:

var result = s.Split(new []{Enviornment.NewLine}, StringSplitOption.RemoveEmptyEntries)

答案 4 :(得分:0)

如果您的拆分条件很简单,请使用正则表达式。