2017-11-13 5 views
-3

私はこのような数式文字列を持っています。文字列をRegexに置き換えて、Javaの置換関数で開始タグと終了タグを置き換えます。

(##type## * 2) + 5 + ##component## + ##param## 

交換後、私はこのようになりたいです。

((value.type) * 2) + 5 + (value.component) + (value.param) 

私は常に「値」を追加します。文字列をパラメータの先頭に追加し、両方の辺()を追加します。これどうやってするの?

+0

を連鎖によってそれを行うことができますか? – notyou

+0

何を試しましたか?あなたは正規表現のキャプチャグループを研究しましたか? – f1sh

+0

https://stackoverflow.com/a/47265834/4016500 –

答えて

0

あなたは、なぜあなたはこの方法でそれを入れて、パラメータを渡し、および数学関数に変数を入れていないreplaceAll方法、例えば:

class Value { 
    String type; 
    String component; 
    String param; 
    //Getters and setters 
} 

public static void main(String[] args) { 
    String s = "(##type## * 2) + 5 + ##component## + ##param##"; 
    Value value = new Value(); 
    value.type = "a"; 
    value.component = "b"; 
    value.param = "c"; 
    s = s.replace("##type##", value.type).replaceAll("##component##", value.component).replaceAll("##param##", 
      value.param); 
    System.out.println(s); 
} 
+0

私はそれがすでに正しいと思うが、これは最高の答えです。 https://stackoverflow.com/a/47265834/4016500 –

4
String test = "(##type## * 2) + 5 + ##component## + ##param##"; 
System.out.println(test.replaceAll("##(.*?)##", "(value.$1)")); 
+0

ありがとう、私の問題を解決しました。 –

関連する問題