Pour obtenir les derniers n
caractères d'une chaîne, j'ai supposé que vous pouviez utiliser
ending = string[-n..-1]
mais si la chaîne est inférieure à des n
lettres, vous obtenez nil
.
Quelles solutions de contournement sont disponibles?
Contexte : Les chaînes sont en ASCII simple, et j'ai accès à ruby 1.9.1, et j'utilise des objets Ruby simples (pas de frameworks Web).
chars
au lieu de split.join
fonctionne. Je ne pense pas que vous ayez besoin du dernierto_s
si vous utilisez join.n.xpath('ReferenceID').inner_text.split(//).last(7).join.to_s.to_i
j'avais besoin du to_s pour effectuer le to_i pour extraire la valeur numérique."123".split(//).last(5).join
(Ruby 2.0.0)Eh bien, la solution de contournement la plus simple à laquelle je puisse penser est:
(EDIT: l'
or
opérateur a une priorité inférieure à l'affectation, assurez-vous donc de l'utiliser à la||
place.)la source
string.reverse[0..n].reverse
, ce qui me donne une seconde de "attendez, pourquoi fait-il ça?" (ou le ferait si je ne le lisais pas dans le contexte de cette question)||
placeor
ou mettre des parenthèsesstr[-n..-1] or str
.En Ruby droit (sans Rails), vous pouvez faire
Par exemple:
Si vous utilisez Ruby on Rails, vous pouvez appeler des méthodes
first
etlast
sur un objet chaîne. Ces méthodes sont préférées car elles sont succinctes et intuitives.Par exemple:
la source
la source
"abcde".reverse[0,3].reverse
>>> "cde""ab".reverse[0,3].reverse
>>> "ab""a".reverse[0,3].reverse
>>> "a"Vous pouvez utiliser le code suivant:
la source
Pour obtenir les n derniers caractères d'une chaîne, vous pouvez le faire
a [-n, n] si a est le tableau.
Voici un exemple si vous en voulez un.
ruby-1.9.2-p180: 006> a = "911234567890"
=> "911234567890"
ruby-1.9.2-p180: 009> a [-5,5]
=> "67890"
ruby-1.9.2-p180: 010> a [-7,7]
=> "4567890"
la source
nil
est renvoyé, ce que cette question essayait spécifiquement d'éviter.Avez-vous essayé une regex?
Le regex capture autant de caractères qu'il peut à la fin de la chaîne, mais pas plus de n. Et le stocke dans 1 $.
la source
Amélioration de la réponse d'EmFi.
la source