9
votes

Comment peut-on supprimer plusieurs barres obliques de traînage d'une URL dans Ruby?

Ce que j'essaie de réaliser ici, c'est dire que nous avons deux exemples d'URL: xxx pré>

Comment puis-je extraire les URL à rayures? P>

url1 = "http://emy.dod.com/kaskaa/dkaiad/amaa"
url2 = "http://http://www.example.com"


1 commentaires

@other_people_reading_this_question Si, comme moi, il vous suffit de supprimer une barre oblique de fin, vous pouvez utiliser chaîne # chomp . E.g: "/ chemin / à / to / to /". Chomp ("/")


3 Réponses :


28
votes

Si vous devez simplement supprimer toutes les barres obliques de la fin de la chaîne d'URL, vous pouvez essayer la regex suivante:

"http://emy.dod.com/kaskaa/dkaiad/amaa//////////".sub(/(\/)+$/,'')
"http://www.example.com/".sub(/(\/)+$/,'')


2 commentaires

Bonne réponse. Un commentaire mineur de regex est que les parenthèses ne sont pas nécessaires ici.


Merci Alex. J'ai compris hier gsub (/ \ / * $ / $ /) fonctionne aussi comme Crudson mentionné.



4
votes

Bien que ce thread soit un peu vieux et que la réponse supérieure est assez bonne, mais je suggère une autre façon de le faire:

/^(.*?)\/$/


2 commentaires

uppote d'être une expansion pure, au lieu d'utiliser des fonctions spécifiques à la langue


Merci de voter pour si longtemps @theepsilon: D Je pense que cette demande pourrait être faite en utilisant uniquement Regex, au lieu de certaines fonctionnalités spécifiques sur la langue.



0
votes
def without_trailing_slash path
  path[ %r(.*[^/]) ]
end

path = "http://emy.dod.com/kaskaa/dkaiad/amaa//////////"

puts without_trailing_slash path # "http://emy.dod.com/kaskaa/dkaiad/amaa"

0 commentaires