从Java中的String中删除尾随子字符串

tbc*_*ord 3 java string

我希望删除一些字符串的部分,如果它以某个字符串结尾.

一个例子是取这个字符串: "am.sunrise.ios@2x.png"

并删除@2x.png所以它看起来像:"am.sunrise.ios"

我如何检查字符串的结尾是否包含"@2x.png"并删除它?

小智 9

private static String removeSuffixIfExists(String key, String suffix) {
    return key.endswith(suffix)
        ? key.substring(0, key.length() - suffix.length())
        : key; 
    }
}

String suffix = "@2x.png";
String key = "am.sunrise.ios@2x.png";

String output = removeSuffixIfExists(key, suffix);

Run Code Online (Sandbox Code Playgroud)


小智 7

假设您有一个初始化为String file = "am.sunrise.ios@2x.png";.

if(file.endsWith("@2x.png"))
    file = file.substr(0, file.indexOf("@2x.png"));
Run Code Online (Sandbox Code Playgroud)

endsWith(String)方法返回一个布尔值,确定字符串是否具有某个后缀。根据这一点,您可以在第一个字符和您尝试删除的字符的索引之前用其自身的子字符串替换字符串。

  • 考虑使用`lastIndexOf`。 (4认同)

Mur*_*nik 6

您可以检查lastIndexOf,如果它存在于字符串中,则用于substring删除它:

String str = "am.sunrise.ios@2x.png";
String search = "@2x.png";

int index = str.lastIndexOf(search);
if (index > 0) {
    str = str.substring(0, index);
}
Run Code Online (Sandbox Code Playgroud)

  • `String.lastIndexOf` 可以在字符串中的任何位置找到子字符串,而不仅仅是在末尾。您应该检查“str.endsWith(suffix)”,然后可以内联对“lastIndexOf”的调用。 (4认同)