Каков наилучший способ вставить тег <wbr /> в HTML из бэкэнда - PullRequest
0 голосов
/ 23 октября 2009

Мы имеем дело с большим количеством UGC (1 м + / мес), и иногда наши пользователи вводят большие строки без пробелов, что заставляет веб-браузеры отображать содержимое странным образом, нарушая пользовательский интерфейс здесь и там.

Я пытаюсь найти способ разумной и быстрой обработки текста размером до 50 КБ и вставлять теги, где это необходимо.

Я уже построил это, но JVM, кажется, дурачит большие строки (где-то около 20 Кб, он задыхается), поэтому я думал об использовании сценария Perl для выполнения модификации и вызова его из Java, но я не знаю, как написать Perl: (

Есть ли какие-нибудь библиотеки, которые делают это? Кто-нибудь сталкивался с этой проблемой?

Ответы [ 3 ]

1 голос
/ 23 октября 2009

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 голосов
/ 23 октября 2009
#!/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 строки символов.

0 голосов
/ 23 октября 2009

Что вы подразумеваете под "дросселями"? Занимает слишком много времени? Выдает исключение?

В любом случае, 20K - ничто; проблема скорее всего в вашем коде. Если вы получили исключение (или сбой JVM), вы можете опубликовать соответствующую трассировку стека? Если это займет слишком много времени, вы профилировали это? Вы можете опубликовать результаты? Также может помочь просмотр исходного кода.

Вы используете для этого StringBuffer и / или StringBuilder вместо непосредственного манипулирования строкой, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...