заменить все вхождения.для нормализации - PullRequest
1 голос
/ 10 ноября 2011

Скажем, у меня есть строка "foo /./ bar", тогда она должна быть нормализована до "foo / bar". Я попытался сделать это с помощью следующего регулярного выражения:

String result = filePath.replaceAll("\\./", "");

но у меня это не сработало ... есть идеи?

Ответы [ 3 ]

0 голосов
/ 10 ноября 2011

Полагаю, вам нужно нормализовать путь к файлу Windows, а не просто удалить точки (в вашем примере вам придется удалить точку и следующий слеш). Так почему бы не использовать java.nio.Path ?

Path path = Paths.get(unnormalizedPath);
Path normalized = path.normalize();

Или с pre-Java7, вы можете сделать

new File(unnormalizedPath).getCanonicalPath();
0 голосов
/ 10 ноября 2011

Попробуйте это

System.out.println("./a/./b/c/."
                    .replaceAll("/[.]/|^[.]/","/")
                    .replaceAll("/[.]",""));

выход

/a/b/c
0 голосов
/ 10 ноября 2011

В Java 7 есть встроенные методы для этого в классе Path. (Если вы не используете Java 7, извините.)

В любом случае регулярные выражения, вероятно, не лучший способ для нормализации пути. Намного проще сделать разбиение, а затем добавить элементы пути в стек, ничего не добавляя, когда элемент равен ., и выталкивать, если он ...

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