Было бы проще просто использовать StringBuilder
напрямую, без явного разбиения:
StringBuilder result = new StringBuilder();
String delim = "";
for (int i = 0; i < number.length(); i += 4) {
result.append(delim);
delim = "-";
result.append(number, i, min(i + 4, number.length()));
}
Этот подход, вероятно, будет, по крайней мере, на порядок быстрее, чем использование регулярных выражений, потому что он далекоменьше работы.