質問: s.substring(3); } }else{ result += s; break; } } System.out.println(result); } } ```
回答: 質問のコードを HashMap を使って汎用的に書き直してみました。 ``` import java.util.*; import java.lang.*; import java.io.*; import java.util.regex.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { System.out.println(swapString("abcdefghi", "abc", "ghi")); } static String swapString(String source, String a, String b) { HashMap map = new HashMap(); map.put(a, b); map.put(b, a); Pattern pattern = Pattern.compile(Pattern.quote(a) + "|" + Pattern.quote(b)); Matcher matcher = pattern.matcher(source); StringBuffer sb = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(sb, map.get(matcher.group())); } matcher.appendTail(sb); return sb.toString(); } } ``` 出力 ``` ghidefabc ```