Vous pouvez utiliser split et join rencontré auges de cordes et objets Array:
>> s = "/var/usr/local/noob/"
=> "/var/usr/local/noob/"
>> p = s.split('/')
=> ["", "var", "usr", "local", "noob"]
>> p.slice!(-1)
=> "noob"
>> p.join('/')
=> "/var/usr/local"
>> p.slice!(-1)
=> "local"
>> p.join('/')
=> "/var/usr"
>> p.slice!(-1)
=> "usr"
>> p.join('/')
=> "/var"
Maintenant, il vous suffit de mettre ces deux fonctions dans un objet qui maintient l'état de la chaîne dont le dernier bloc est supprimé.
Je ne sais pas beaucoup de rubis, mais quelque chose comme ce qui suit pourrait être appliquée:
// Pseusdo - Java
class LastBlockRemoved {
private String string;
private Array currentState;
public String remove_last_block_of_string() {
currentState = string.split("/");
string = currentState.join("/");
return string
}
}
Ou cependant qui est codé en Ruby: P
BTW Ce serait bien si quelqu'un pouvait réellement mettre en œuvre cette classe, afin que je puisse apprendre comment il est fait;)
Pas beaucoup de différence entre "/ var/usr/local/Noob /" et «/var/usr/local/noob " –
Vous serez plus heureux si vous utilisez la facilité de votre langage pour manipuler les chemins comme des chemins, plutôt que comme des chaînes. @Peter suggère une bibliothèque appelée Pathname, qui me va bien (je ne suis pas un programmeur ruby) – rmeador