2010-06-27 5 views
0

Quel est le moyen le plus simple de transformer la chaîne "YingYang" en "Ying/Yang"?Opération de chaîne

+9

« YingYang » .replace (« Ying/Yang ») :-) –

+0

Si vous demandez le 'plus simple', c'est tout. Mais ne sais pas si son utilité ou non keruilin, pouvez-vous préciser ce que vous voulez vraiment faire ici ... acclamations Sameera – sameera207

Répondre

1

En supposant que vous souhaitez insérer une barre oblique partout où une lettre minuscule est suivie d'une lettre majuscule:

"YingYang".gsub(/([a-z])([A-Z])/, '\1/\2') 
+4

Je préfère utiliser des classes de caractères nommées, car ils travailleront avec * tous * supérieur/inférieur les caractères en les listant explicitement comme vous le ferez ne fonctionnera que pour, bien, ceux entre * a * et * z *: '" YingYang ".gsub (/ ([[: lower:]]) ([[: upper:] ]) /, '\ 1/\ 2') '. De plus, c'est plus révélateur d'intention. –

+0

@ JörgWMittag: Au moins sur 1.8.7 (avec $ KCODE mis à "u") '" ÖÄÜ "= ~/[: upper:] /' renvoie zéro, donc je ne pense pas que cela fasse une différence. – sepp2k

+1

Oui, mais il * fonctionne * sur Oniguruma, c'est-à-dire Ruby 1.9 et 1.8 avec l'extension Oniguruma. Il fonctionne aussi sur JRuby à la fois sur 1.9 et 1.8, car il utilise JOni (translittération Java ligne par ligne d'Oniguruma) même en mode 1.8. Et ça ne fait pas mal sur l'IRM 1.8. De plus, il rend l'intention plus claire (IMO). –