我有一串在红宝石, s (说)可能有任何标准的行结束(\n, \r\n, \r).我要把所有的那些 \ns.什么是最好的方式吗?

这似乎是一个超级-的共同问题,但是没有太多的文件。显然还有简单粗解决方案,但是没有任何内处理这个吗?

优雅的,习惯用红宝石的解决方案是最好的。

编辑:意识到 ^M\r 都是相同的。但仍存在三种情况。(见 维基百科.)

有帮助吗?

解决方案

最好的只是为了处理要明确并不会改变这两种情况试图让太聪明:

s.gsub /\r\n?/, "\n"

其他提示

由于ruby1.9可以使用 String::encodeuniversal_newline: true 得到你所有的新线 \n 而保持你的编码不变:

s.encode(s.encoding, universal_newline: true)

一旦在一个已知行国家可以自由转换回来CRLF使用 :crlf_newline.例如:转换文件中的未知的(可能混合)的结局 CRLF (例如),阅读它在二元模式,则:

s.encode(s.encoding, universal_newline: true).encode(s.encoding, crlf_newline: true)

我认为干净的解决方案将是使用一个正则表达式:

s.gsub! /\r\n?/, "\n"

尝试在NetBeans IDE中打开它们 - 它的前问我,对我从其他地方打开的项目之一,如果我想修复行尾。我觉得可能是一个菜单选项来做到这一点,但是这将是我想尝试的第一件事。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top