0

String 内の variabel を、数値に基づく単数/複数の単語に置き換えたいと考えています。

正規表現を使用しようとしましたが、正規表現と置換を組み合わせて使用​​する方法がわかりません。

//INPUTS: count = 2; variable = "Some text with 2 %SINGMULTI:number:numbers%!"
public static String singmultiVAR(int count, String input) {
    if (!input.contains("SINGMULTI")) {
        return null;
    }

    Matcher m = Pattern.compile("\\%(.*?)\\%", Pattern.CASE_INSENSITIVE).matcher(input);
    if (!m.find()) {
        throw new IllegalArgumentException("Invalid input!");
    }

    String varia = m.group(1);

    String[] varsplitted = varia.split(":");

    return count == 1 ? varsplitted[1] : varsplitted[2];
}
//OUTPUTS: The input but then with the SINGMULTI variable replaced.

入力全体ではなく、変数のみを出力するようになりました。それをコードにどのように追加する必要がありますか?

4

2 に答える 2

1

Matcheのメソッドを使用replaceAllして、一致した文字列を置き換えることができます。

実際、文字列を分割する必要はありません:。正規表現で を照合するだけです。

// You don't need the "if (!input.contains("SINGMULTI"))" check either!
Matcher m = Pattern.compile("\\%SINGMULTI:(.*?):(.*?)\\%").matcher(input);

カウントが 1 の場合はグループ 1 に置き換え、それ以外の場合はグループ 2 に置き換えます。

// after checking m.find()
return m.replaceAll(count == 1 ? "$1" : "$2");
于 2019-06-15T14:56:23.763 に答える