Проверьте, равен ли URL или является ли подкаталог? - PullRequest
0 голосов
/ 25 июля 2011

Я ищу наилучший способ сделать следующее в Java (возможно, с помощью Apache Commons, некоторой утилитой Spring или, может быть, просто Java / Regex):

Мне нужно проверить, если данныйШаблон URL равен заданной строке или является подкаталогом строки:

String pattern = "/myPath";

if(StringUtils.startsWithIgnoreCase(url, pattern) { // }

Вышеуказанное (с использованием методов commons) работает для URL, таких как: "../../myPath", "../../myPath/", "../../myPath/1/2"

Проблема в том, что оно также соответствует: "../../myPathABC".Это нежелательное поведение, так как это не тот же каталог или подкаталог.

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Попробуйте URI.relativize(URI).

0 голосов
/ 25 июля 2011

Если вы хотите использовать регулярное выражение, я пошел бы с регулярным выражением, совпадающим со всем следующим регулярным выражением:

/^(\.\.\/)*myPath(\/|\/.*|$)/

возвращает true для:

myPath
../../myPath
../../myPath/
../myPath
myPath/

и вернет false для любого варианта:

myPathABC

или что-то не myPath. Вероятно, есть способ сделать это с помощью команды java, хотя в java есть библиотека для всего, к сожалению, я ее не знаю.

О, это будет не работать для /myPath/, но я не уверен, если вы хотите (вы не указали это), если вы хотите, чтобы это тоже совпадало, добавьте 1016 * до myPath.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...