2

私は文字列を持っています、と言いxyzabc_1_1ます。

最初に最後の文字がそうであるかどうかをテストしたいので、そうであれば、最後の文字を。_1に置き換えます。文字列はになります。_1_01_1xyzabc_1_01_1

_1最後の桁が私が使用しているかどうかを見つけるために

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

しかし、2番目の部分、つまり最後のオカレンスを。に置き換える方法がわかりません_01_1

4

4 に答える 4

4

文字列を置き換えるには、部分文字列を取得して新しいサフィックスを連結するだけです。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

于 2012-05-04T16:29:01.950 に答える
0

完了しましたが、最適化が必要です...

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();
    }
于 2012-05-05T18:48:09.720 に答える
0

文字列全体を新しいものに置き換えたいと思います。「_01_1」を連結して新しい文字列を作成します。次に交換します。

于 2012-05-04T16:29:41.930 に答える