4

我想这将在两分钟内得到答复,但我无法通过谷歌搜索解决方案。

试过:这个这个

我有一个文本区域,它首先从服务器接收一些数据(动态使用 AJAX)。textarea 中的文本可能如下所示:

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 行且可应用于所有浏览器和操作系统的解决方案

顺便说一句,我不喜欢正则表达式,所以也许真正的问题会在那里..

更新

从这个答案和 Michael_B 先生,我得到了这个对我有用的解决方案,但我有一种预感,这个角色可能不是最好的解决方案:

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

3 回答 3

8

基于@Explosion Pills 评论和 jsFiddle

演示

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

更新基于文本区域中的新行

更新了演示

也许这将解决您的问题\n- 需要 jQuery。

function replaceHtml(string_to_replace) {
    return $("<div>").append(string_to_replace.replace(/&nbsp;/g, ' ').replace(/<br.*?>/g, '&#13;&#10;')).text();
}
于 2013-03-05T13:54:53.633 回答
1

如果我错了,请纠正我,但它不应该$.replaceAll()是 jQuery 函数而不是 JS 吗?

还是replace()纯Javascript?

于 2013-03-05T13:50:27.543 回答
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;
 }
于 2013-03-05T13:54:41.543 回答