Comment puis-je convertir des chaînes comme "ceci est un exemple" en "ceci est un exemple" sous ruby ?comment convertir des chaînes comme "ceci est un exemple" en "ceci est un exemple" sous ruby
Répondre
Si vous essayez de créer quelque chose qui est un bon slug d'URL, il existe de nombreuses façons de le faire.
Généralement, vous souhaitez supprimer tout ce qui n'est pas une lettre ou un nombre, puis remplacer tous les caractères par des tirets.
Alors:
s = "this is an 'example'"
s = s.gsub(/\W+/, ' ').strip
s = s.gsub(/\s+/,'-')
A la fin s
sera égal "this-is-an-example"
J'ai utilisé le code source à partir d'une bibliothèque de test rubis appelé contest pour obtenir de cette façon particulière de le faire.
La version la plus simple:
"this is an example".tr(" ", "-")
#=> "this-is-an-example"
Vous pouvez aussi faire quelque chose comme ça, ce qui est légèrement plus robuste et plus facile à étendre en mettant à jour l'expression régulière:
"this is an example".gsub(/\s+/, "-")
#=> "this-is-an-example"
Le ci-dessus va remplacer tous morceaux d'espace blanc (toute combinaison de plusieurs espaces, tabulations, nouvelles lignes) à un seul tiret.
Voir le String class reference pour plus de détails sur les méthodes qui peuvent être utilisées pour manipuler des chaînes dans Ruby. Si vous essayez de générer une chaîne pouvant être utilisée dans une URL, vous devez également supprimer d'autres caractères non alphanumériques (en particulier ceux qui ont une signification particulière dans les URL) ou les remplacer par un équivalent alphanumérique (example, comme suggéré par Rob Cameron dans sa réponse).
Si vous utilisez Rails un coup d'oeil à parameterize()
, il fait exactement ce que vous cherchez:
http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001367
foo = "Hello, world!"
foo.parameterize => 'hello-world'
- 1. en citant des constantes dans php: "ceci est un MY_CONSTANT"
- 2. Pour "ceci" ou non pour "ceci" en C#?
- 3. Comment configurer les constantes comme ceci - Constants.Page.Title.MyCase - en C#?
- 4. user_dump_dest est-il dangereux de mettre ceci sur un NAS
- 5. Comment refactoriser ceci en J?
- 6. Est-ce un exemple de sélecteurs?
- 7. Existe-t-il un moyen d'écrire ceci comme une requête?
- 8. DotNetOpenId ClaimedIdentifier - Est-il sûr de coder en dur ceci?
- 9. Comment modéliser ceci dans OO
- 10. comment puis-je traduire ceci en ruby nokogiri?
- 11. Comment faire ceci dans Unity?
- 12. JavaScript Math: Comment est-ce que j'écris ceci?
- 13. (* ceci) [i]?
- 14. Comment construire ceci en expression rationnelle
- 15. Comment est-ce que j'analyse correctement ceci avec l'esprit?
- 16. Comment mapper ceci dans NHibernate
- 17. comment écrire une boucle dans Windbg comme ceci?
- 18. comment générer le texte retourné comme ceci - ʍo იɟɹ әʌoʞɔɐʇs
- 19. Comment configurer ceci (Moq Setup)
- 20. comment utiliser subsonic2.1 créer une requête comme ceci
- 21. Comment codez-vous ceci: Le menu SO
- 22. Faire des chaînes URL Friendly (par exemple: convertir Montréal en Montréal)
- 23. webresource.axd demandé sans paramètres - Ceci est une demande WebResource invalide
- 24. Comment devriez-vous retourner * ceci avec un shared_ptr?
- 25. Quelle est la manière la plus idiomatique de Ruby d'écrire ceci?
- 26. Comment obtenir l'index d'un élément sans 'ceci'?
- 27. Exemple de ruby glade/gtkbuilder?
- 28. Quel est le but de ceci dans l'objectif-c
- 29. La compréhension d'IE de 'ceci'
- 30. Une meilleure façon d'écrire ceci: tableau
Cheers mate, c'est exactement ce que je veux, mais ce semble ne pas travailler avec Unicode et il se trouve "paramétrer" la méthode ne trouve pas ici – helloedwin