2

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

让我举个例子:

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

你有没有看到一种方法(如果可能的话很性感)来更新这样的字符串?

谢谢Rubists :)

4

2 回答 2

10

gsub可以为“替换为”参数提供一个块,该块的结果将插入到找到匹配项的位置。块的参数是匹配的字符串。因此,为了实现这一点,我们尽可能多地捕获空白/\s+/

代码:

s = "hello,   how          are  you ?"
res = s.gsub(/\s+/) { |m| m.length }
puts res
# => hello,3how10are2you1?
于 2011-06-11T23:15:32.937 回答
-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

于 2011-06-11T23:14:05.200 回答