字符串:用数字替换空格

Zag*_*g.. 2 ruby regex string split gsub

我想blank spaces用一个fixnum(它的数量blank spaces)替换字符串中的每一个.

让我举个例子:

s = "hello,   how          are  you ?"
omg(s) # => "hello,3how10are2you1?"
Run Code Online (Sandbox Code Playgroud)

你有没有看到更新这样的字符串的方式(如果可能性感)?

谢谢Rubists :)

ctc*_*rry 10

gsub可以为"替换为"参数输入一个块,将块的结果插入到找到匹配的位置.块的参数是匹配的字符串.因此,为了实现这一点,我们捕获尽可能多的空白(/\s+/)并在每次找到一个部分时将其提供给块,返回该字符串的长度,该长度将被放回最初找到空白的位置.

码:

s = "hello,   how          are  you ?"
res = s.gsub(/\s+/) { |m| m.length }
puts res
# => hello,3how10are2you1?
Run Code Online (Sandbox Code Playgroud)

  • 在Ruby 1.9中,它可以进一步缩短为`s.gsub(/\s + /,&:length)`. (3认同)