無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

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

キャメルケースを単語に分割する

キャメルケースを単語に分割したいときには、「ゼロ幅の肯定先読み」を使うとさくっとできます。

// 分割する文字列
String str  = "StringIndexOutOfBoundsException";

// 小文字と大文字の間で分割
String[] strs = str.split( "(?<=[a-z])(?=[A-Z])" );
for ( String s : strs) {
    System.out.println( s );
}

実行結果です。

String
Index
Out
Of
Bounds
Exception

動作としては、

  • 「(?<=[a-z])」が「ゼロ幅の肯定後読み」で、「小文字の後」にマッチ(小文字自体にはマッチしない)。
  • 「(?=[A-Z])」が「ゼロ幅の肯定先読み」で、「大文字の前」にマッチ(大文字自体にはマッチしない)。
  • なので、「(?<=[a-z])(?=[A-Z])」は、「小文字と大文字の」にマッチし、期待通り分割される。

と理解したのだけど、あってるのかな?んー、正直、あんまし自信はない。