2009-10-23 64 views
0

我们处理很多UGC(1m +/mo),有时候我们的用户会输入一些没有空格的大字符串,导致网页浏览器以奇怪的方式显示内容,在这里和那里破坏UI。什么是从后端插入<wbr />标签的最佳方式

我试图找到一种方法来智能快速处理文本高达50k并在适当的地方插入标签。

我已经建立了这个,但JVM似乎在大字符串(大约20K它扼流圈某处),所以我想用Perl脚本做修改,并从Java调用它,但我不知道如何编写Perl :(

是否有这样做的任何图书馆了吗?有没有人遇到这个问题?

回答

0

你说的“电抗器”是什么意思?时间过长?抛出一个异常?

无论如何,20K不算什么;问题很可能出现在你的代码中,如果y你会得到一个异常(或JVM崩溃),你能发布一个适当的堆栈跟踪吗?如果时间太长,你是否描述它?你可以发布结果吗?看到一些源代码也会有所帮助。

您正在使用StringBuffer和/或StringBuilder,而不是直接操纵字符串,对吗?

1

TIMTOWDI用Perl,但我喜欢:

$newstring; 
$string = $incrediblylongstring; 
for($i=0;$i<length($string);$i+100){ 
    $rest = substr($string, $i, 100); 
    $newstring .= '<br />'.$rest; 
} 

但是,你也可以有一个更直观的编辑器,允许客户把自己进入用JavaScript。伪代码是当编辑器有焦点时,捕获输入以插入<br />。在输入的单词后面输入
请参阅。 :d

+0

''不是'
':http://www.quirksmode.org/oddsandends/wbr.html – 2009-10-23 18:53:07

+0

糟糕。只是表明我并不知道一切。尽管如此,Perlcode仍然适用,但我知道有人会提出一个线上或几乎一个班轮 – 2009-10-24 17:37:26

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字符串。

相关问题