Удаление завершающей косой черты из строки (измененной из типа 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");
Но ни то, ни другое не работает.
9 30

9 ответов:

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

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..., так как строки являются неизменяемыми.

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

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

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

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

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

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

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

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

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

StringUtils.chomp (s,файл.separatorChar+"")

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

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

Строка trimmedSlash = pathExample.заменить все("^/|/$","");

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

   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)
        }
    }  

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

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