当我得到TextBox.Text
时,我该如何将其拆分成行?
对于文本文件,我通过在\r\n
处拆分来做到这一点(Notepad ++)。对于TextBox
,通常是\r\n
,但显然并非总是如此 - 因为我的\r\n
分割偶尔会因粘贴输入而失败。幸运的是,对于文本文件,我可以使用Notepad ++的“显示所有字符”功能来检查空白。但是,如何查看TextBox
中的字符?
显然TextBox
本身知道如何处理这个问题,因为它能够在正确的位置显示带有换行符的文本。如何在var s = MyTextBox.Text;
显示休息的每个位置s
和“拆分TextBox
?”
修改:我已经检查了我的正则表达式,实际上我已经在Environment.Newline
而不是\r\n
分裂了。
答案 0 :(得分:1)
如果是TextBox
,您可以按照评论中的建议使用Lines
属性。但是你也可能需要在其他情况下从字符串中获取行。
为此,我使用基于StringReader
的扩展方法:
public static IEnumerable<string> GetLines(this string s)
{
using (var reader = new StringReader(s))
{
string line;
while ((line = reader.ReadLine()) != null)
{
yield return line;
}
}
}
(此方法也适用于我的NString library)
你可以像这样使用它:
string[] lines = textBox.Text.GetLines().ToArray();
StringReader
类知道分割线的位置,它可能比使用正则表达式更快(只是一种直觉,我实际上没有对它进行基准测试 编辑:我只做了一个快速的基准测试,StringReader
比Regex
快了约6倍)
答案 1 :(得分:0)
您可以使用
var lines = Regex.Split(s, @"\r\n|\r|\n");
无论新线来自哪里,都可以在任何新线上可靠地分割。