c# - 由于 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
解决方案
serializedText.TrimEnd('\n').TrimEnd('\r')
在调用内部使用Regex.Split(...)
而不是serializedText
.
推荐阅读
- inno-setup - 如何使用 Inno Setup 中的附加下载大小更新 Windows 控制面板/设置应用程序中显示的应用程序大小
- security - 保存通过 Stripe 存储用户银行信息的方法
- typoscript - TYPO3 10.4.x:获取实际语言 Uid 的打字稿
- animation - 在三元运算符中使用时 AnimatePresence 和 motion.div 不起作用
- c# - 为什么会出现这样的错误统一货币化
- sql - 如何检测 SQL 重复值
- awk - 当 awk $n 参数以 z 结尾时是什么意思?
- ruby-on-rails - Docker - 调用后端不起作用 - 即使 app/api 在同一个网络上
- c++ - 析构函数真的会破坏内存还是只是在对象的生命周期结束之前运行?
- python - 为什么我只有一种方式得到循环导入错误?