首页 > 解决方案 > 由于 EOF 处的指定模式,C# 中的 RegEx Split 方法返回一个空字符串。我怎样才能避免这种行为?

问题描述

我已经构建了这个方法,它接受带有 \n 字符的文本流并区分字符串数组中的每一行:

private static string[] SerialToLines(string serializedText)
    {
        string newLinePattern = "\r\n|\r|\n";
        string[] linesData = Regex.Split(serializedText, newLinePattern);

        return linesData;
    }

问题是输入文件可能(我不能确定)出现在 \r\n 的末尾serializedText,这会在输出字符串数组中生成一个额外的空项,并导致我的程序中出现错误。有没有办法显式使用 RegEx(或 RegEx 方法)来避免这种行为?现在,我将手动检查一个额外的空字符串,但我希望看到一个基于 RegEx 的解决方法。

作为附录,我将摘录通常提交为的文本类型serializedText

0.333333333333241 0.3333333333339809 0.6666666666657874\r\n 0.333333333333241 0.3333333333339809 0.333333333332501\r\n 0.3333333333339809 0.6666666666669905 0.6666666666657874\r\n 0.3333333333339809 0.6666666666669905 0.333333333332501\r\n 0.6666666666663889 0.3333333333332409 0.6666666666657873\r\n 0.6666666666663887 0.3333333333332411 0.333333333332501\r\n 0.6666666666669904 0.6666666666663887 0.6666666666657874\r\n 0.6666666666669905 0.6666666666663887 0.333333333332501\r\n

标签: c#regex

解决方案


serializedText.TrimEnd('\n').TrimEnd('\r')在调用内部使用Regex.Split(...)而不是serializedText.


推荐阅读