J'ai la chaîne suivante Je souhaite cette chaîne dans le tableau suivant p> J'ai utilisé la regex suivante, Il se divise correctement mais omet également le motif correspondant, je souhaite également conserver ce motif.
Ce que je reçois est p> il omit le motif correspondant. P> Peut-il aider à conserver ces caractères ainsi que dans la matrice résultante < / p> p>
3 Réponses :
Merci pour la réponse, mais cela me donne l'erro
Alors, quelle serait la solution en 1.8? Je dois utiliser 1.8.7
J'ai trouvé la réponse de l'un de mes collègues, pour 1.8.7, procédez comme suit. str.underscore.split (/ _ /). Chaque fut | S | S.Capitaliserez! fin code>
@ Alex-kliuchnikau Vous pouvez le faire 1.8 en utilisant #scan au lieu de #split. Ensuite, vous n'avez pas besoin de la lunette d'oeil.
Je pense que cela fera le travail pour vous
str.underscore.split(/_/).each do |s| s.capitalize! end
Note pour les futurs visiteurs: cela fonctionnera pour les rails et ne fonctionnera pas pour le code PURE RUBY car Underscore code> est une méthode spécifique aux rails.
Note pour l'avenir: cela ne fonctionnera que s'il n'y a pas de soulignement dans le texte original.
Note pour l'avenir: Dans mon cas, j'ai utilisé des rails et les chaînes que j'ai manipulées ne contiennent pas «_», mais les préoccupations soulevées par @Joelparkerhenderson et @Alex sont absolument valides et doivent être prises en compte avant d'utiliser un soulignement
code> fonction. Merci @joel et @Alex à nouveau.
@ Nadeem-Yasin Cette réponse que vous avez acceptée n'est pas une bonne, souffrant de bugs de caractères spéciaux et nécessitant une bibliothèque de rails.
Je suis d'accord avec Dbenhur; Son Scan Lookahead est plus court, plus rapide et plus sûr que cette solution et que mes solutions proposées. IMHO, vous devriez changer pour accepter DBENHUR'S.
Trois réponses jusqu'à présent, chacune avec une limitation: on ne fait que des rails et des ruptures avec un soulignement dans la chaîne d'origine, une autre est Ruby 1.9 uniquement, la troisième a toujours une erreur potentielle avec son caractère spécial. J'ai vraiment aimé la division sur une assertion de la largeur zéro de @Alex Kliuchnikau, mais l'OP a besoin de Ruby 1.8 qui ne supporte pas le lookbehind. Il y a une réponse qui utilise uniquement la lookahead zéro et fonctionne bien en 1.8 et 1.9 en utilisant String # Scan au lieu de #split .
str.scan /.*?[a-z](?=[A-Z]|$)/ => ["Hello", "World How are", "You I Am", "Fine"]
+1 Pour le Scan Lookahead - Votre solution est plus sûre, plus rapide, plus courte et meilleure que la mienne. :)