在最后一次出现字符后删除字符串

Kri*_*har 38 java

在我的应用程序中,我附加一个字符串来创建生成URL的路径.现在我想在按下后退按钮时删除附加的字符串.

假设这是字符串:

/String1/String2/String3/String4/String5
Run Code Online (Sandbox Code Playgroud)

现在我想要一个这样的字符串:

/String1/String2/String3/String4/
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Dhe*_*ngh 59

您可以使用lastIndexOf()相同的方法

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)
    }
}  
Run Code Online (Sandbox Code Playgroud)


rsa*_*san 40

String whatyouaresearching = myString.substring(0, myString.lastIndexOf("/"))
Run Code Online (Sandbox Code Playgroud)

  • "substring",而不是subString():) (4认同)
  • @rsan很棒的答案,因为字符串whatyouaresearching包含最后一个"/"它更像是:`String whatyouaresearching = myString.substring(0,myString.lastIndexOf("/")+ 1)` (3认同)

ccp*_*zza 6

您可以使用空安全的org.apache.commons.lang3.StringUtils.substringBeforeLast

从javadoc:

// The symbol * is used to indicate any input including null.
StringUtils.substringBeforeLast(null, *)      = null
StringUtils.substringBeforeLast("", *)        = ""
StringUtils.substringBeforeLast("abcba", "b") = "abc"
StringUtils.substringBeforeLast("abc", "c")   = "ab"
StringUtils.substringBeforeLast("a", "a")     = ""
StringUtils.substringBeforeLast("a", "z")     = "a"
StringUtils.substringBeforeLast("a", null)    = "a"
StringUtils.substringBeforeLast("a", "")      = "a"
Run Code Online (Sandbox Code Playgroud)

Maven 依赖:

// The symbol * is used to indicate any input including null.
StringUtils.substringBeforeLast(null, *)      = null
StringUtils.substringBeforeLast("", *)        = ""
StringUtils.substringBeforeLast("abcba", "b") = "abc"
StringUtils.substringBeforeLast("abc", "c")   = "ab"
StringUtils.substringBeforeLast("a", "a")     = ""
StringUtils.substringBeforeLast("a", "z")     = "a"
StringUtils.substringBeforeLast("a", null)    = "a"
StringUtils.substringBeforeLast("a", "")      = "a"
Run Code Online (Sandbox Code Playgroud)