2009-10-23 46 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字符串。

相關問題