删除最后一个字符出现后的字符串

44
在我的应用程序中,我正在追加一个字符串以创建路径以生成URL。现在我想在按下返回按钮时删除追加的字符串。
假设这就是字符串:
/String1/String2/String3/String4/String5

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

/String1/String2/String3/String4/

我该如何做这件事?


我已经在这里回答了这个问题。这是一个简单的方法。 - Zar E Ahmer
5个回答

70

你可以使用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)
    }
}  

是的,我正在获取“/”最后一次出现的索引,但如何删除该字符后面的字符串呢? - Krishna Suthar
1
谢谢Dheeresh。现在这样就可以了。如果我遇到任何问题,我会向您请教的。 - Krishna Suthar
这种方法对于已经以“/”结尾的路径不起作用,考虑到这个路径/user/etc/lib/,在处理这种情况时要小心。 - A.B.

49
String whatyouaresearching = myString.substring(0, myString.lastIndexOf("/"))

4
"substring",不是subString() :) (注:原文为英语,已直接翻译成中文) - N Kaushik
3
很好的回答,由于字符串 whatyouaresearching 包含最后一个斜杠“/”,因此代码应该是这样的:String whatyouaresearching = myString.substring(0, myString.lastIndexOf("/") + 1)。请注意,翻译过程中不应更改原文意思,也不应添加解释或其他信息。 - John Spax

7

您可以使用 null-safe 的 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"

Maven依赖:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.8</version>
</dependency>

3
最简单的方法是…
        String path = "http://zareahmer.com/questions/anystring";

        int pos = path.lastIndexOf("/");

        String x =path.substring(pos+1 , path.length()-1);

现在x的值是stringAfterlastOccurence

0

在Nepster的回答中,第三行应该是

String x =path.substring(pos+1 , path.length());

而不是 String x =path.substring(pos+1 , path.length()-1); 因为 substring() 方法将结束位置加一作为第二个参数。


1
看起来对我来说是一个答案。 - Drew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接