Вы можете использовать методы split и join из объектов String и 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"
Теперь вам просто нужно поместить эти две функции в объект, который содержит состояние строки, последний блок которой удаляется.
Я не знаю много о ruby, но можно реализовать что-то вроде следующего:
// 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
}
}
Или как это закодировано в Ruby: P
Кстати, было бы здорово, если бы кто-то мог на самом деле реализовать этот класс, чтобы я мог узнать, как это делается;)