Указанный выше метод заканчивается с помощью метода и, вероятно, понятен большинству читателей. Для полноты вот решение с использованием регулярных выражений:
def stripSlash(str) {
str?.find(/^(.*?)\/?$/) { full, beforeSlash -> beforeSlash }
}
assert "/foo/bar" == stripSlash("/foo/bar")
assert "/baz/qux" == stripSlash("/baz/qux/")
assert "quux" == stripSlash("quux")
assert null == stripSlash(null)
Регулярное выражение можно прочитать как:
- от начала строки:
^
- захватить не жадную группу длиной от нуля или более символов:
(.*?)
- , заканчивающийся дополнительной косой чертой:
/?
- с последующим концом строки:
$
В этом случае возвращается только группа захвата, поэтому слеш удаляется, если он присутствует.