2013-03-05 2 views
3

Я думаю, на это будет дан ответ через две минуты, но я не смогу решить проблему с Google.Заменить <br /> в текстовом поле с разделителем строк (Javascript)

Пытались: this, this

У меня есть текстовое поле, который первый recieves некоторых данных с сервера (динамически с помощью AJAX). Текст в текстовое поле может выглядеть следующим образом:

Hello&nbsp;Cruel&nbsp;<br&nbsp;/>World! 

Мои пользователи не нравится внешний вид этого :)

Так что я написал очень простую функцию:

function replaceHtml(string_to_replace) 
    { 
     var result = replaceAll(string_to_replace, "&nbsp;", " "); 
     result = result.replace(/<br\s*\/?>/mg,"\n\r"); // or "\n", "\r", "\r\n" 
     return result; 
    } 

Мой вывод выглядит как это:

Hello Cruel World! 

Вместо:

Hello Cruel 
World! 

Я хотел бы решение, которое не имеет длину не более 5 строк и могут быть применены со всеми браузерами и операционными системами

Btw, Im не поклонник регулярных выражений, поэтому, возможно, реальная проблема будет там ..

UPDATE

From this answer и г-н Michael_B я получил это решение, которое работает для меня, но у меня есть подозрение, персонаж не может быть лучшим решением есть:

function replaceHtml(string_to_replace) 
{ 
    return string_to_replace.replace(/&nbsp;/g, ' ').replace(/<br.*?>/g, '\u2028'); 
} 
+0

Я не уверен, но попробовать «\ п \ г» вместо «\ п \ г» (простая цитата заменить двойные кавычки) – JoDev

+3

Кажется работать: HTTP: // jsfiddle.net/Xfffg/ –

+0

@joDev Одиночные кавычки и двойные кавычки эквивалентны в Javascript –

ответ

1

Исправьте меня, если я ошибаюсь, но не должно быть $.replaceAll(), поскольку это функция jQuery, а не JS?

Или replace() в чистом виде Javascript?

+0

Я написал свой собственный .. –

+0

Я вижу. Могу я спросить, почему? :) –

+0

Честно говоря: не знал, что существует $ .replaceAll() :) –

0

Вам не нужно использовать JQuery там:

function replaceHtml(string_to_replace) 
{ 
    var result = string_to_replace.replace(/\&nbsp;/g, ' ').replace(/<br\s*\/?>/mg,"\n\r"); // or "\n", "\r", "\r\n" 
    return result; 
} 
8

основе @Explosion Таблетки комментарии и jsFiddle

DEMO

function replaceHtml(string_to_replace) 
{ 
     return string_to_replace.replace(/&nbsp;/g, ' ').replace(/<br.*?>/g, '\n'); 
} 

UPDATE на основе New line in text area

Updated DEMO

Может быть, это будет исправить проблему с \n - Требуется JQuery.

function replaceHtml(string_to_replace) { 
    return $("<div>").append(string_to_replace.replace(/&nbsp;/g, ' ').replace(/<br.*?>/g, '&#13;&#10;')).text(); 
} 
+0

извините, но это не работает для меня (mozilla 19.0) –

+0

Я использую Mozilla 19.0, и он отлично работает для меня. Вы смотрите на него на jsFiddle или в собственном решении? –

+0

На jsFiddle это работает, а не на моем решении. Я просто попытался заменить часть '\ n' на это: '\ u2028' от [этот ответ] (http://stackoverflow.com/questions/6833269/javascript-platform-independent-line-separator), и он работает над моим решением, но у меня есть подозрение, что это не лучший способ сделать это. Еще я дам вам +1 для приятного кода , но пока я не выясню, что происходит в текстовом поле, я не знаю, нормально ли отмечать этот вопрос, как было сказано. –

 Смежные вопросы

  • Нет связанных вопросов^_^