尝试:
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秒,他的需要400ms)。在 4.5 秒中,只有大约 0.7 秒实际构建了模式。其中大部分是在匹配/替换上,所以它甚至没有导致自己进行这种优化。
我通常更喜欢不那么冗长的解决方案。毕竟,更多的代码=更多的潜在错误。但在这种情况下,我必须承认,Jon的版本——这实际上是天真的实现(我的意思是以一种好的方式)——要好得多。