我有一个字符串,比如说xyzabc_1_1
。
我想首先测试最后一个字符是否是_1
,如果是,将最后一个替换_1
为_01_1
. 字符串将变为xyzabc_1_01_1
.
_1
查找我正在使用的最后一位数字是否为
str1.matches("^.*_\\d$")
但不知道第二部分,即如何用_01_1
.
我有一个字符串,比如说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
.
这是一个简单的单行,使用replaceAll()
和反向引用:
String str2 = str1.replaceAll("_\\d$", "_01$0");
目前尚不清楚 是否01
基于1
or 是一个常数。即如果2
要成为02_2
然后这样做:str1.replaceAll("_(\\d)$", "_0$1_$1")
这是一个测试:
String str1 = "xyzabc_1_1";
String str2 = str1.replaceAll("_\\d$", "_01$0");
System.out.println(str2);
输出:
xyzabc_1_01_1
您宁愿用新字符串替换整个字符串。创建一个连接“_01_1”的新字符串。然后更换。
完成但需要优化...
String str1 = "xyzabc_1";
/* System.out.println(str1.matches("^.*_\\d$")); */
try {
if (str1.matches("^.*_\\d$")) {
String cutted = str1.substring(str1.lastIndexOf("_"),
str1.length());
str1 = str1.replaceAll(cutted, "_01" + cutted); //
System.out.println(str1);
} else {
}
} catch (Exception e) {
e.printStackTrace();
}