2011-06-11 172 views
2

我想用fixnum(它是blank spaces的数字)替换字符串中的每个blank spaces字符串:用数字替换空格

让我举一个例子:

s = "hello, how   are you ?" 
omg(s) # => "hello,3how10are2you1?" 

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

谢谢Rubists :)

回答

10

gsub最好能需要为“替换为”参数提供一个块,块的结果被插入到找到匹配的地方。该块的参数是匹配的字符串。因此,为了实现这一点,我们捕获尽可能多的空白(/\s+/),并在每次找到节时将其填充到块中,然后返回该字符串的长度,然后将其放回原来找到空白处。

代码:

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

如果它包含一个解释,我会有+1这个答案。 – 2011-06-11 23:20:26

+0

真棒解决方案。 – 2011-06-11 23:21:31

+0

描述加入 – ctcherry 2011-06-11 23:29:19

-1

则可以通过一个数组拆分做到这一点:JavaScript示例

var s = "hello, how   are you ?"; 

function omg(str) { 
    var strArr = str.split(''); 
    var count = 0; 
    var finalStr = ''; 
    for(var i = 0; i < strArr.length; i++) { 
     if(strArr[i] == ' ') { 
      count++; 
     } 
     else 
     { 
      if(count > 0) { 
       finalStr += '' + count; 
       count = 0; 
      } 

      finalStr += strArr[i]; 
     } 
    } 
    return finalStr 
} 

alert(omg(s)); //"hello,3how10are2you1?" 

大声笑,这似乎也可以是对JavaScript

+0

-1因为OP不使用JavaScript。 – 2011-06-11 23:18:50

+0

谢谢@ pico.creator。我想在Ruby中这样做,但是你的一段代码也很有用,所以我无论如何都要加上+1 :) – 2011-06-11 23:24:21

+0

嗯,我认为它很容易转换,并不是一个好的ruby用户。所以这个例子可以很容易理解 – PicoCreator 2011-06-11 23:26:10