我们处理大量的UGC(1m + / mo),有时候我们的用户会输入没有空格的大字符串,这会导致网页浏览器以奇怪的方式显示内容,从而打破用户界面。
我正在尝试找到一种方法,智能地快速处理高达50k的文本并在适当的位置插入标记。
我已经构建了这个,但JVM似乎废弃了更大的字符串(大约20k左右它窒息)所以我在考虑使用Perl脚本进行修改并从Java调用它但我不知道如何写Perl :(
那里有没有这样做的图书馆?有没有人遇到过这个问题?
答案 0 :(得分:1)
使用Perl的TIMTOWDI,但我喜欢:
$newstring;
$string = $incrediblylongstring;
for($i=0;$i<length($string);$i+100){
$rest = substr($string, $i, 100);
$newstring .= '<br />'.$rest;
}
但是,你也可以拥有一个更直观的编辑器,允许客户端使用javascript输入自己。伪编码是,当编辑器具有焦点时,捕获输入以插入<br />
。在键入的单词之后,我输入了
答案 1 :(得分:0)
“窒息”是什么意思?需要太长时间?抛出异常?
无论如何, 20K 什么都不是;问题很可能出在你的代码中。如果您遇到异常(或JVM崩溃),您可以发布适当的堆栈跟踪吗?如果花了太长时间,你对它进行了描述吗?你可以发布结果吗?看到一些源代码也会有所帮助。
你正在使用StringBuffer和/或StringBuilder,而不是直接操纵String,对吗?
答案 2 :(得分:0)
#!/usr/bin/perl
use strict;
use warnings;
my $long_string = join ' ', map { 'a' x rand 20_000 } 1 .. 100;
# adjust 40 according to taste
$long_string =~ s{(\S{40})}{$1<wbr/>}g;
print $long_string, "\n";
大约需要0.25
秒来完成约1,000,000
个字符串的所有替换。