在java中,如何删除字符串中最后一个数字之后的所有内容?

mwg9r5ms  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(346)

如果我有一个由字母和数字组成的字符串,我如何才能去掉字符串中最后一个数字之后的所有内容?
例子: banana_orange_62_34_wednesday 会变成
banana_orange_62_34 1234_4564_www_6_j_1_rrrr 会变成 1234_4564_www_6_j_1 我已经试过了:

int endIndex = inputXMLFilename.lastIndexOf("\\d+");
inputXMLFilename = inputXMLFilename.substring(0, endIndex);
57hvy0tb

57hvy0tb1#

@Test
public void cutAfterLastDigit() {
    String s = "banana_orange_62_34_wednesday";

    Pattern pattern = Pattern.compile("^(.*\\d)");
    Matcher matcher = pattern.matcher(s);
    if (matcher.find()) {
        System.out.println(matcher.group(0));
    }
}
f87krz0w

f87krz0w2#

使用regex替换:

str = str.replaceAll("\\D+$", "");

正则表达式的含义: \D 表示“非数字” + 意思是“一个或多个上一个术语,贪婪(尽可能多的输入)” $ 表示“输入结束”
这个 $ 将匹配锚定到末尾,否则将匹配(并删除)所有非数字。 lastIndexOf() 只适用于纯文本,不适用于正则表达式。

相关问题