C# 如何拆分Environment.NewLine?
我想数一数文本中的行数 以下工程罚款:C# 如何拆分Environment.NewLine?,c#,C#,我想数一数文本中的行数 以下工程罚款: int numLines = copyText.Split('\n').Length - 1; 但是,我一直在我的整个代码中使用System.Environment.NewLine,当我尝试时: int numLines = copyText.Split(System.Environment.NewLine).Length - 1; 它一直在下面显示一条红色的蠕动线,表示无法将字符串转换为字符。我一直在试图纠正这一点,但运气不佳。有人有什么想法吗?您
int numLines = copyText.Split('\n').Length - 1;
但是,我一直在我的整个代码中使用System.Environment.NewLine
,当我尝试时:
int numLines = copyText.Split(System.Environment.NewLine).Length - 1;
它一直在下面显示一条红色的蠕动线,表示无法将字符串转换为字符。我一直在试图纠正这一点,但运气不佳。有人有什么想法吗?您必须使用带字符串[]
:
int numLines = copyText.Split(new[]{System.Environment.NewLine}, StringSplitOptions.None).Length - 1;
要在换行符上拆分,可以使用以下命令:
copyText.Split(new string[] { System.Environment.NewLine },
StringSplitOptions.None).Length - 1;
下面是使用字符串数组的重载的一个示例
请注意,它的类型为System.String
。在Windows上它是一个2字符的字符串:\r\n
,在Unix系统上它是一个1字符的字符串:\n
。这就是为什么不能将其用作字符
维基百科有一篇关于新词的好文章:
我建议您阅读。正如@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行
唯一的问题是,虽然它修复了红线,但我无法执行计数,因为当应该有5行时,它返回0:
int numberOfChar=copyText.Length-numLines
@user21255:你说的是copyText.Split('\n')。Length-1代码>工作正常吗?如果使用System.Environment.NewLine
时返回0
,则表示字符串不包含System.Environment.NewLine
。一种解决方案是只使用以前的解决方案。这个字符串来自哪里?它来自一个富文本框,框中显示的任何文本,copyText就是该文本。文本实际上来自一个进入富文本框的文本文件。@user21255:可能该txt文件使用的是unix换行符约定。您可以使用notepad++进行检查,它解决了错误,但我有一个小问题与此相关,我在上面答案下的评论中提到了这个问题。