从后端在HTML中插入<wbr />标记的最佳方法是什么?

时间:2009-10-23 15:26:57

标签: java html perl

我们处理大量的UGC(1m + / mo),有时候我们的用户会输入没有空格的大字符串,这会导致网页浏览器以奇怪的方式显示内容,从而打破用户界面。

我正在尝试找到一种方法,智能地快速处理高达50k的文本并在适当的位置插入标记。

我已经构建了这个,但JVM似乎废弃了更大的字符串(大约20k左右它窒息)所以我在考虑使用Perl脚本进行修改并从Java调用它但我不知道如何写Perl :(

那里有没有这样做的图书馆?有没有人遇到过这个问题?

3 个答案:

答案 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个字符串的所有替换。