2011-06-11 3 views
2

Je voudrais remplacer chaque blank spaces dans une chaîne par un fixnum (qui est le numéro de blank spaces).Chaîne: remplacement des espaces par un nombre

Laissez-moi vous donner un exemple:

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

Voyez-vous un moyen (sexy si possible) de mettre à jour une chaîne comme celui-ci?

Merci vous Rubists :)

Répondre

10

gsub peut être alimenté par un bloc pour le paramètre "replace with", le résultat du bloc est inséré dans le lieu où la correspondance a été trouvée. L'argument du bloc est la chaîne correspondante. Donc, pour implémenter cela, nous capturons autant d'espaces que possible (/\s+/) et nous l'introduisons dans le bloc chaque fois qu'une section est trouvée, renvoyant la longueur de cette chaîne, qui est remise à l'endroit où l'espace a été trouvé à l'origine.

code:

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

J'aurais +1 cette réponse si elle incluait une explication. –

+0

Une solution géniale. –

+0

Description ajoutée – ctcherry

-1

il est possible de le faire via un split tableau: exemple 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?" 

Lol, cela semble le meilleur, il peut être pour le javascript

+0

-1 depuis OP n'est pas l'utilisation de JavaScript. –

+0

Merci @ pico.creator. Je voudrais le faire dans Ruby, mais votre morceau de code est aussi utile, donc j'ajoute +1 de toute façon :) –

+0

Hmm je pensais que ce serait facilement convertible, pas vraiment un bon utilisateur de rubis. Donc cet exemple peut être facilement compris – PicoCreator

Questions connexes