私は文字列を持っています、と言いxyzabc_1_1
ます。
最初に最後の文字がそうであるかどうかをテストしたいので、そうであれば、最後の文字を。_1
に置き換えます。文字列はになります。_1
_01_1
xyzabc_1_01_1
_1
最後の桁が私が使用しているかどうかを見つけるために
str1.matches("^.*_\\d$")
しかし、2番目の部分、つまり最後のオカレンスを。に置き換える方法がわかりません_01_1
。
私は文字列を持っています、と言いxyzabc_1_1
ます。
最初に最後の文字がそうであるかどうかをテストしたいので、そうであれば、最後の文字を。_1
に置き換えます。文字列はになります。_1
_01_1
xyzabc_1_01_1
_1
最後の桁が私が使用しているかどうかを見つけるために
str1.matches("^.*_\\d$")
しかし、2番目の部分、つまり最後のオカレンスを。に置き換える方法がわかりません_01_1
。
文字列を置き換えるには、部分文字列を取得して新しいサフィックスを連結するだけです。endsWith
さらに、正規表現の代わりに使用できます。IMHOの方が読みやすいです。
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");
予想される入力によっては、null/空/長さのチェックも必要になる場合がありますstr
。
完了しましたが、最適化が必要です...
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();
}
文字列全体を新しいものに置き換えたいと思います。「_01_1」を連結して新しい文字列を作成します。次に交換します。