在字符串Ruby中的每个#字符处添加\ n

时间:2014-05-13 16:58:08

标签: ruby regex

我想在输入Ruby脚本的任何文件的每66个字符后面开一个新行。

some_string.insert( 66, "\n" )

puts some_string

表示新行在第66个字符后开始但我需要在每个第66个字符后发生。换句话说,每行应该是66个字符长(除了可能是最后一个)。

我确定它涉及正则表达式,但我已尝试使用insertscangsub进行各种操作,并且无法使其正常工作。

我是Ruby和编程的新手,这是我在教程之外尝试的第一件事。感谢所有的信息。

4 个答案:

答案 0 :(得分:2)

some_string.gsub(/.{66}/, "\n")

答案 1 :(得分:2)

你可以这样做:

<your_string>.scan(/.{1,66}/).join("\n")

它基本上会在每第66个字符分割<your_string>,然后通过在每个部分之间添加\n重新加入它。

或者这种变化不会将单词分成两半:

<your_string>.scan(/.{1,66} /).join("\n")

答案 2 :(得分:1)

如果您有兴趣探索不使用RegEx的答案,请尝试以下操作:

a = "Your string goes here"
d = 66
Array(0..a.length/d).collect {|j| a[j*d..(j+1)*d-1]}.join("\n")

RegEx可能更快,但是它使用了Array Constructor,.collect和.join,因此它可能是一个有趣的学习练习。第一部分根据块的数量(a.length/d)生成一个数字数组。 collect将子字符串收集到一个数组中。 collect的主体按原始字符串上的范围生成子字符串,join将其与&#39; \ n&#39;分隔符。

答案 3 :(得分:0)

使用以下命令将字符串拆分为长度为66的字符串数组,并使用换行符将这些字符串连接起来。

some_string.scan(/.{1,66}/).join("\n")