Подтвердить что ты не робот

Удалите конечную косую черту из строки (измененной из типа url) в JAVA

Я хочу удалить конечную косую черту из строки в Java.

Я хочу проверить, заканчивается ли строка URL-адресом, и если это так, я хочу удалить его.

Вот что у меня есть:

String s = "http://almaden.ibm.com/";

s= s.replaceAll("/","");

и это:

String s = "http://almaden.ibm.com/";
length  =  s.length();
--length;
Char buff = s.charAt((length);
if(buff == '/')
{
     LOGGER.info("ends with trailing slash");
/*how to remove?*/
}
else  LOGGER.info("Doesnt end with trailing slash");

Но не работает.

4b9b3361

Ответ 1

Существует два варианта: использование сопоставления шаблонов (немного медленнее):

s = s.replaceAll("/$", "");

или

s = s.replaceAll("/\\z", "");

И используя оператор if (немного быстрее):

if (s.endsWith("/")) {
    s = s.substring(0, s.length() - 1);
}

или (немного уродливый):

s = s.substring(0, s.length() - (s.endsWith("/") ? 1 : 0));

Обратите внимание, что вам нужно использовать s = s..., потому что строки неизменяемы.

Ответ 2

Это должно работать лучше:

url.replaceFirst("/*$", "")

Ответ 3

простой метод в java

String removeLastSlash(String url) {
    if(url.endsWith("/")) {
        return url.substring(0, url.lastIndexOf("/"));
    } else {
        return url;
    }
}

Ответ 4

url.replaceAll("/$", "") $ соответствует концу строки, поэтому он заменяет конечную косую черту, если она существует.

Ответ 5

Если вы являетесь пользователем Apache Commons Lang, вы можете получить прибыль от метода chomp, расположенного в StringUtils

Строка s = "http://almaden.ibm.com/";

StringUtils.chomp(с, File.separatorChar + "")

Ответ 6

Как указывает его имя, метод replaceAll заменяет все вхождения искомой строки на заменяющую строку. Это явно не то, что вы хотите. Вы могли бы найти его сами, прочитав javadoc.

Второй ближе к истине. Читая javadoc класса String, вы найдете полезный метод под названием substring, который извлекает подстроку из строки с двумя индексами.

Ответ 7

более компактный способ:

String pathExample = "/test/dir1/dir2/";

String trimmedSlash = pathExample.replaceAll( "^/|/$", "");

regexp ^/заменяет первое,/$заменяет последний

Ответ 8

   if (null != str && str.length > 0 )
    {
        int endIndex = str.lastIndexOf("/");
        if (endIndex != -1)  
        {
            String newstr = str.subString(0, endIndex); // not forgot to put check if(endIndex != -1)
        }
    }  

Ответ 9

Самый простой способ...

String yourRequiredString = myString.subString(0,myString.lastIndexOf("/"));