如何拆分环境.新行.

本文关键字:环境 新行 拆分 何拆分 | 更新日期: 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;