J'essaie d'ajouter une barre oblique si nécessaire:
a = '/var/www' a.gsub ...
8 Réponses :
Le script suivant montre comment cela peut être effectué: it Sorties: p> et fonctionne en substituant le dernier caractère de La ligne (si ce n'est pas un / code>) avec le même caractère plus un
/ code> aussi. p> p>
Pourquoi voulez-vous utiliser gsub em>? puisque vous ne faites pas de substitution, annoncez simplement la barre oblique si nécessaire: P>
sous code> pas
gsub code>. li>. LI>.
sous! code> ou
gsub! Li>. Li>.
ol>
path << '/' if path[-1].chr != '/' # Make sure path ends with a slash
Cela ne fonctionnera pas comme [-1] retournera le code de caractère, pas le personnage, vous voulez quelque chose de plus comme: un << '/' Si un [-1] .chr! = '/'
@darkliquid: ça marche dans Ruby 1.9. Mise à jour de ma réponse, merci.
Un autre itinéraire jusqu'à 1.8 Compatibilité est le chemin << '/' Sauf si le chemin [-1 ..- 1] == '/'.
Il existe deux manières différentes qui ont déjà été couvertes, à travers une autre dans le mélange: ou p> Il convient de noter que ceux-ci convertissent tous les deux des cas de "//" à "/" n'importe où dans la chaîne, bien que si vous gagnez avec des chemins, il est peu probable de causer des problèmes. P> p>
"/var/www".gsub(/[^\/]$/, '\1/') #=> "/var/www/" "/var/www/".gsub(/[^\/]$/, '\1/') #=> "/var/www/"
"exemple.com" .gsub (/ [^ \ \ /] $ /, '\ 1 /') # => "exemple.co/"
Voici une version plus lisible
path << '/' unless path.end_with?('/')
a = File.join(a, "") Swift, simple, and has the effect of guaranteeing that a ends in a path separator; that is, it gives the same result whether a is "/var/www" or "/var/www/".This is same as Joe White's comment above; I don't know why he didn't submit it as an answer, as it deserves to be one.Oddly, the Pathname library doesn't provide a convenient way of doing the same thing.
Fonctionnellement génial, mais je ne pense pas pouvoir mettre cela dans mon code sans ajouter de commentaire.
assez simple GSUB, qui est plus facile comme une doublure que la concaténation (<<) Ceci trouve simplement un caractère en option / code> à la fin de la chaîne et le représentant p> p>
Vous pouvez utiliser .chomp ('/') code> à la bande du
/ code> et ensuite
.concat ('/') code> Pour ajouter une barre oblique à nouveau.
'/var/www/'.chomp('/').concat('/') # => "/var/www/"
'/var/www'.chomp('/').concat('/') # => "/var/www/"
Je ne pense pas avoir besoin d'avoir besoin d'une barre oblique de fin dans Ruby. Connaissez-vous sur le fichier.Join? ruby-doc.org/core/classes/file.html#m002545
Il est également utile d'apprendre à propos de la bibliothèque
'pathname' code> qui implémente une algèbre entière pour travailler avec des chemins de chemin.