試す:
String s = // long string
s.replaceAll("(.{10})", "$1<br>");
編集:上記の作品...ほとんどの場合。私はそれをいじっていて、問題に遭遇しました.デフォルトのパターンを内部的に構築するため、改行で停止します。これを回避するには、別の方法で記述する必要があります。
public static String insert(String text, String insert, int period) {
Pattern p = Pattern.compile("(.{" + period + "})", Pattern.DOTALL);
Matcher m = p.matcher(text);
return m.replaceAll("$1" + insert);
}
鋭い読者は別の問題に気付くでしょう: 置換テキストで正規表現の特殊文字 (「$1」など) をエスケープする必要があります。そうしないと、予測できない結果が得られます。
私も興味を持ち、このバージョンを上記の Jon と比較してベンチマークしました。これは桁違いに遅いです (60k ファイルの 1000 回の置換はこれで 4.5 秒、彼では 400 ミリ秒かかりました)。4.5 秒のうち、実際にパターンを構築していたのは約 0.7 秒だけでした。そのほとんどはマッチング/交換にあったため、そのような最適化につながることさえありません。
私は通常、言葉の少ない解決策を好みます。結局のところ、より多くのコード = より多くの潜在的なバグです。しかし、この場合、Jon のバージョン (これは実際にはナイーブな実装です (良い意味で)) の方がはるかに優れていることを認めなければなりません。