我想在输入Ruby脚本的任何文件的每66个字符后面开一个新行。
some_string.insert( 66, "\n" )
puts some_string
表示新行在第66个字符后开始但我需要在每个第66个字符后发生。换句话说,每行应该是66个字符长(除了可能是最后一个)。
我确定它涉及正则表达式,但我已尝试使用insert
,scan
,gsub
进行各种操作,并且无法使其正常工作。
我是Ruby和编程的新手,这是我在教程之外尝试的第一件事。感谢所有的信息。
答案 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")