辞書を片手に~PatternResponderの作成(番外編) | Pythonでなんか作ってみる

辞書を片手に~PatternResponderの作成(番外編)

前回 のタイトルが間違っていたのでこっそり修正した。


あと、最後に実装したPatternResponder.response()だが、よく見てみると、もっとシンプルに変えられそうに見えたので直す。

PatternResponder

public String response(String msg) {
for (int index=0;index < patterns.length; index++) {
Matcher m = patterns[index].matcher(msg);
if (m.find()) {
return replacePattern.matcher(responses[index].response(msg))
.replaceFirst(m.group());
}
}
return randomResponder.response(msg);
}

replacePatternは前回、

p = Pattern.compile("%match%");

としていた部分をフィールドに追い出した。毎回同じオブジェクトを生成するのも無駄だと思ったからだ。

変更のポイントは、「%match%」が応答に存在するかどうかのチェックをなくしたこと。

もともとreplaceFirst()は正規表現に一致した場合に置換するメソッドであり、一致しない場合は何もしない。

つまり、無条件にreplaceFirst()を呼び出してしまえばいいのだ。

テスト実行して、もちろんGreen。