Ruby: scinde une chaîne en caractères, en comptant à partir de la droite
Version courte-Comment dois-je faire en Python rsplit() en ruby?
Version longue -- Si je veux découper une chaîne en deux parties (nom, suffixe) au premier caractère'.', cela ne fera très bien l'affaire:
name, suffix = name.split('.', 2)
Mais si je veux couper à la dernier (à l'extrême droite) caractère'.', je n'ai pas été en mesure de trouver quelque chose de plus élégant que cette:
idx = name.rindex('.')
name, suffix = name[0..idx-1], name[idx+1..-1] if idx
Noter que le nom d'origine de la chaîne ne peut pas avoir un point du tout, auquel cas le nom doit être intacte et le suffixe doit être nul; il peut également avoir plus d'un point, dans ce cas, seul le bit après la finale devrait être le suffixe.
Vous devez vous connecter pour publier un commentaire.
String#rpartition
est juste que:Il a été introduit en Ruby 1.8.7, donc, si vous exécutez une version antérieure, vous pouvez utiliser
require 'backports/1.8.7/string/rpartition'
pour que cela fonctionne.Mettre sur le chapeau de pensée pendant un certain temps et est venu avec cette regexp:
Ou en termes humains "split à la dot n'est pas suivie par un autre point, à la fin de la chaîne". Fonctionne très bien aussi avec dotless des chaînes et des séquences de points:
Voici ce que j'avais fait faire:
ou peut-être plus classiquement,
si c'="ce que.d'.faire" que vous pouvez faire ceci:
et vous en obtiendrez
Si vous voulez la version littérale de
rsplit
, vous pouvez le faire (c'est en partie une blague, mais en fait, il fonctionne bien):Vous pouvez également ajouter
rsplit
de la classe String par l'ajout de ce à le haut de votre fichier.Il n'a pas assez de travail, comme la division.
par exemple,
vs
Mais je ne peux pas tout à fait comment court le découper.