一致する文字列は出力しませんが、結果はnullです。一致しない文字列を印刷するには
public class Replacement {
public static void main(String[] ignored) {
String str = "aaa bbb ddd";
Map<String, String> mapping = new HashMap<>();
mapping.put("aaa", "hello");
mapping.put("bbb", "java");
mapping.put("ccc", "world");
Pattern pattern = Pattern.compile("([a-zA-Z_]+)"); // pattern compiling
Matcher matcher = pattern.matcher(str); // pattern matching
StringBuffer sb = new StringBuffer();
while(matcher.find()) { // while matcher found
String replace = mapping.get(matcher.group());
matcher.appendReplacement(sb, replace + " ");
}
matcher.appendTail(sb);
System.out.println(sb);
}
}
結果:
ハローJavaのnull //私はハローJavaのDDDD」期待
私はwhile(!matcher.find())
マップにキー 'dddd'がないので、** null **を返すのは正しいです。 – developer033