2009-08-25 7 views

Répondre

4

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.

7

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).

Questions connexes