最近業務の中で文字列をちょこっといじる処理を実装したのだが、
Sample.java
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Split {
public static void main(String[] args) {
//お題:長さ10の文字列を2文字ずつ、5個のブロックに分割する
String sampleString = "0123456789";
List<String> splitedStringList = new ArrayList<String>();
Matcher m = Pattern.compile("[\\s\\S]{1,2}").matcher(sampleString);
while (m.find()) {
splitedStringList.add(m.group());
}
for (String element : splitedStringList) {
System.out.println(element); //01 23 45 76 89が改行されて表示される
}
}
}
正規表現だのなんだのを駆使すれば↑みたいな「パッと見かっこいいことやってそうな」処理が書ける。
というか、最初はそういう実装にした。
split()とかは引数に指定した区切り文字基準なので、「X文字ずつ」という指定ができないからだ。
しかし、後ろを通りかかった現場のリーダーからは
「substring()使えばよくない?」と。
所詮、超単純なルールで文字列を区切るだけなので、それだけで十分。しかし、実装中それを使うという発想は全く出てこなかった。お恥ずかしい。
1つの実装をとっても、処理のパフォーマンス、コードの可読性など考えるべきことはたくさんあるが…
・単純な処理で実現できるならそれに従う。
・自分の頭の中の引き出しを増やす&自在に引き出せるようにする。
Javaに限らず、個人的に反省すべき一件でした。