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

时间:2015-02-07 21:55:29

标签: java string

如果字符串以某个字符串结尾,我希望删除部分字符串。

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

然后移除@2x.png,使其如下所示:"am.sunrise.ios"

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

7 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

假设您将字符串初始化为String file = "am.sunrise.ios@2x.png";

if(file.endsWith("@2x.png"))
    file = file.substr(0, file.indexOf("@2x.png"));

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

答案 2 :(得分:1)

由于我试图在类似样式的项目的ArrayList上执行此操作,因此我最终使用以下代码:

    for (int image = 0; image < IBImages.size(); image++) {
        IBImages.set(image, IBImages.get(image).split("~")[0].split("@")[0].split(".png")[0]);
    }

如果我有一个名称为

的图像列表
[am.sunrise.ios.png, am.sunrise.ios@2x.png, am.sunrise.ios@3x.png, am.sunrise.ios~ipad.png, am.sunrise.ios~ipad@2x.png]

这允许我将字符串分成两部分。 例如,如果我在“〜”上拆分,“am.sunrise.ios~ipad.png”将被分成“am.sunrise.ios”和“~ipad.png”。我可以通过引用[0]来获取第一部分。因此,我在一行代码中得到了我正在寻找的东西。

请注意 图片 是“am.sunrise.ios~ipad.png”

答案 3 :(得分:0)

如果您希望通常从@删除整个字符串内容,直到结束,您可以使用

yourString = yourString.replaceAll("@.*","");

其中@.*是正则表达式(regular expression),表示以@开头的子字符串,后面有任何字符(由.表示)零次或多次(由{表示) {1}})。

如果没有*部分,您的字符串将保持不变。


如果您只想更改此特定子字符串@xxx(而不是像@2x.png那样替换),同时确保将其放在字符串的末尾,则可以使用

@3x.png

其中

  • yourString = yourString.replaceAll("@2x\\.png$",""); 表示字符串结尾
  • $代表\\.字面值(我们需要转义它,因为如前所示.是代表任何字符的元字符)

答案 4 :(得分:0)

public static void main(String [] args){

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

    word = word.replace("@2x.png", "");

    System.out.println(word);
}

答案 5 :(得分:0)

您可以使用String.split():

public static void main(String [] args){
  String word = "am.sunrise.ios@2x.png";
  String[] parts = word.split("@");
  if (parts.length == 2) {
    System.out.println("looks like user@host...");
    System.out.println("User: " + parts[0]);
    System.out.println("Host: " + parts[1]);
  }
}

然后你有一个字符串数组,其中第一个元素包含&#34之前的部分; @&#34;第二个元素是&#34; @&#34;。

之后的部分

答案 6 :(得分:0)

考虑答案12及其各自的评论,我认为最好的组合是endsWith + lastIndexOf

因此,我将使用以下代码(到目前为止尚未完全发布):

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

if (str.endsWith(search)) {
  str = str.substring(0, str.lastIndexOf(search));
}