読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

String#replaceFirstの引数は正規表現です

Java

今日の不具合。

String#replaceFirstの機能は「指定された正規表現にマッチする最初の文字列を置換する」です。「指定された文字列と同じ最初の文字列を置換する」わけではありません。

サンプル。

// こういう場合はうまく置換されるけど、
String path = "/aaa/bbb/ccc";
System.out.println( path.replaceFirst( "/aaa/bbb", "/xxx/yyy" ) );

// ()などが入るとうまくいかない。
path = "/aaa/bb(b)/ccc";
System.out.println( path.replaceFirst( "/aaa/bb(b)", "/xxx/yyy" ) );

path = "/aaa/bbb/ccc";
System.out.println( path.replaceFirst( "/aaa/.", "/xxx/yyy" ) );

実行結果です。

/xxx/yyy/ccc
/aaa/bb(b)/ccc
/xxx/yyybb/ccc

パスの変換で使ってたら、「()を含むパスの変換がうまくいかない」とかいう不具合になってしまった・・・。orz. JavaDocはちゃんと読んでから使いましょう・・・。