我有一个字符串,例如xyzabc_1_1

我要首先测试最后一个字符是否为_1,如果是,请将最后一个_1替换为_01_1。字符串将变为xyzabc_1_01_1

为了确定我是否使用的最后一位数字是_1

str1.matches("^.*_\\d$")


但不知道第二部分,即如何用_01_1替换最后出现的部分。

最佳答案

要替换该字符串,您只需获取一个子字符串并连接新的后缀即可。此外,您可以使用endsWith代替正则表达式。恕我直言,它更具可读性。

public String replaceSuffix (String target) {
    if (!target.endsWith("_1")) {
       return target;
    }

    return target.substring(0, target.length() - 2) + "_01_1";
}


只是为了好玩,这里是一个可重用的版本,用于替换不同的东西:

public String replaceSuffix (String target, String suffix, String replacement) {
    if (!target.endsWith(suffix)) {
        return target;
    }

    String prefix = target.substring(0, target.length() - suffix.length());
    return prefix + replacement;
}


调用为(对于您的特定示例):

String replaced = replaceSuffix("xyzabc_1_1", "_1", "_01_1");


根据您的期望输入,您可能还希望对str进行一些空/空/长度检查。

07-25 22:36
查看更多