Удалить косую черту из строки (изменено с типа URL) в JAVA - PullRequest
35 голосов
/ 25 марта 2011

Я хочу удалить косую черту из строки в 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");

Но ни одна из них не работает.

Ответы [ 9 ]

79 голосов
/ 25 марта 2011

Есть два варианта: использование сопоставления с образцом (немного медленнее):

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..., потому что строки неизменяемы.

10 голосов
/ 12 ноября 2012

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

url.replaceFirst("/*$", "")
6 голосов
/ 09 октября 2013

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

String removeLastSlash(String url) {
    if(url.endsWith("/")) {
        return url.substring(0, url.lastIndexOf("/"));
    } else {
        return url;
    }
}
3 голосов
/ 25 марта 2011

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

2 голосов
/ 26 апреля 2012

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

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

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

2 голосов
/ 25 марта 2011

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

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

1 голос
/ 18 ноября 2015

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

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

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

регулярное выражение ^ / заменяет первое, / $ заменяет последнее

0 голосов
/ 14 января 2015

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

String yourRequiredString = myString.subString(0,myString.lastIndexOf("/"));
0 голосов
/ 26 мая 2014
   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)
        }
    }  
...