7
votes

Analyse d'url à rubis

J'ai une ficelle assez simple que je veux analyser dans Ruby et essayer de trouver la solution la plus élégante. La chaîne est de format /xyz/mov/exdaf/daeed.mov?arg1=blabla&arg2=3BLA3BLA

Ce que j'aimerais avoir est: string1: /xyz/mov/exdaf/daeed.mov string2: arg1 = blabla & arg2 = 3bla3bla

SO TO TOKENISE ON?

mais ne peut pas trouver un bon exemple. Toute aide serait appréciée.


0 commentaires

3 Réponses :


10
votes

diviser la chaîne initiale sur les points d'interrogation.

str.split("?")
=> ["/xyz/mov/exdaf/daeed.mov", "arg1=blabla&arg2=3bla3bla"]


1 commentaires

Il y a déjà une bibliothèque d'essais URL qui serait probablement un meilleur choix si l'entrée est toujours une URL.



6
votes

Ceci semble être ce que vous recherchez, Cordes Fonction fractionnée intégrée:

"abc?def".split("?") => ["abc", "def"]


0 commentaires

11
votes

Je pense que la meilleure solution serait d'utiliser le module uri . (Vous pouvez faire des choses comme uri.parse ('your_uri__string'). Query Pour faire appel à la droite du ? .) Voir http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/ < P> Exemple: xxx

sinon, vous pouvez capturer sur une regex: / ^ (. *?) \? $ / . Ensuite, 1 $ et 2 $ sont ce que vous voulez. ( URI a plus de sens dans ce cas cependant.)


2 commentaires

Vous pouvez simplement nécessiter «URI» au lieu de «net / http»


Bon point; J'oublie toujours ça parce que je télécharge habituellement quelque chose juste après avoir analysé une URI.