如何拆分环境.新行.
本文关键字:环境 新行 拆分 何拆分 | 更新日期: 2023-09-27 17:56:09
我想计算文本中的行数。
下面工作正常:
int numLines = copyText.Split(''n').Length - 1;
但是,我一直在整个代码中使用System.Environment.NewLine
,当我尝试时:
int numLines = copyText.Split(System.Environment.NewLine).Length - 1;
它不断在下面显示一条红色的蠕动线,说明无法将字符串转换为字符。 一直在试图纠正这一点,但没有运气。有人有什么想法吗?
要在换行符上拆分,可以使用以下内容:
copyText.Split(new string[] { System.Environment.NewLine },
StringSplitOptions.None).Length - 1;
下面是对使用字符串数组的重载的引用。
请注意,System.Environment.NewLine 的类型为 System.String
。在Windows上,它是一个2个字符的字符串:'r'n
,在Unix系统上它是一个1个字符的字符串:'n
。这就是为什么您不能将其用作字符的原因。
维基百科有一篇关于换行符的好文章:https://en.wikipedia.org/wiki/Newline
我建议阅读它。
正如@Jesse Good所指出的,字符串中可能会出现几种换行符。 正则表达式可用于匹配字符串中可能出现的各种换行符:
var text = "line 1'rline 2'nline 3'r'nline 4";
/* A regular expression that matches Windows newlines ('r'n),
Unix/Linux/OS X newlines ('n), and old-style MacOS newlines ('r).
The regex is processed left-to-right, so the Windows newlines
are matched first, then the Unix newlines and finally the
MacOS newlines. */
var newLinesRegex = new Regex(@"'r'n|'n|'r", RegexOptions.Singleline);
var lines = newLinesRegex.Split(text);
Console.WriteLine("Found {0} lines.", lines.Length);
foreach (var line in lines)
Console.WriteLine(line);
输出:
找到 4 行。
第 1
行 第 2
行 第 3
行 第 4 行
你必须使用需要String[]
的重载:
int numLines = copyText.Split(new[]{System.Environment.NewLine}, StringSplitOptions.None).Length - 1;