Строка: замена пробелов числом - PullRequest
2 голосов
/ 12 июня 2011

Я хотел бы заменить каждый blank spaces в строке на fixnum (это число blank spaces).

Позвольте мне привести пример:

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

Видите ли вы (сексуально, если возможно) обновить строку, подобную этой?

Спасибо, Рубисты:)

Ответы [ 2 ]

10 голосов
/ 12 июня 2011

gsub может быть передан блок для параметра «заменить на», результат блока вставляется в место, где найдено совпадение. Аргументом блока является совпавшая строка. Таким образом, чтобы реализовать это, мы собираем как можно больше пробелов (/\s+/) и передаем их в блок каждый раз, когда найден раздел, возвращая длину этой строки, которая возвращается туда, где изначально был пробел.

Код:

s = "hello,   how          are  you ?"
res = s.gsub(/\s+/) { |m| m.length }
puts res
# => hello,3how10are2you1?
0 голосов
/ 12 июня 2011

это можно сделать с помощью разбиения массива: пример 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

...