パーチメント:
我々は、文字列があるとしましょう: string text = "Hello my name is $$name; and my surname is $$surname;"
:それは二重のドル記号で識別される2つの変数、参照名と姓を
また、ハッシュマップを持っています:
HashMap<String, String> variables = new HashMap<String, String>();
variables.put("name", "John");
variables.put("surname", "Doe");
どのように私は/補間置き換えるない変数ハッシュマップのキーとしての一致した正規表現の値を持つ文字列の中に?(おそらく正規表現とJavaは、この実装を持って使用する必要はありません)
最後に、私は、変数をしたいstring text
等しいへ"Hello my name is John and my surname is Doe"
編集:私は何を意味して鍵を知らなくても、ハッシュマップの値を持つキー/変数を置き換えています。たとえば、私たちは、文字列を持っていると我々はすべて交換する必要があります$$variable;
と内側の値をmap[variable]
。
この文字列を置換する最速の方法は何でしょうか?
ドリアングレイ:
あなたはそのような、いくつかの正規表現を使用した入力を解析し、地図内のすべてのキーをルックアップする必要があります:
import java.util.Map;
import java.util.regex.Pattern;
public class T2 {
/** Pattern for the variables syntax */
public static final Pattern PATTERN = Pattern.compile("\\$\\$([a-zA-Z]+);");
public static void main(String[] args) {
String s = "Hello my name is $$name; and my surname is $$surname;";
Map<String, String> variables = Map.of("name", "John", "surname", "Doe");
String ret = replaceVariables(s, variables);
System.out.println(ret);
}
private static String replaceVariables(CharSequence s, Map<String, String> variables) {
return PATTERN.matcher(s).replaceAll(mr -> variables.getOrDefault(mr.group(1), ""));
}
}
出力:
こんにちは、私の名前はジョンで、私の姓がDoeの