我想这会在两分钟内得到解答,但我无法谷歌解决方案。
我有一个textarea,它首先从服务器接收一些数据(动态使用AJAX)。 textarea中的文字可能如下所示:
Hello Cruel <br />World!
我的用户不喜欢这种情况:)
所以我写了一个非常简单的函数:
function replaceHtml( string_to_replace )
{
var result = replaceAll( string_to_replace, " ", " ");
result = result.replace(/<br\s*\/?>/mg,"\n\r"); // or "\n", "\r", "\r\n"
return result;
}
我的输出如下:
Hello Cruel World!
而不是:
Hello Cruel
World!
我希望解决方案最多5行,并且可以应用于所有浏览器和操作系统
是的,我不是正则表达的粉丝,所以也许真正的问题就在那里..更新
From this answer和Michael_B先生我得到了这个解决方案,这对我有用,但我有预感这个角色可能不是最好的解决方案:
function replaceHtml( string_to_replace )
{
return string_to_replace.replace(/ /g, ' ').replace(/<br.*?>/g, '\u2028');
}
答案 0 :(得分:8)
基于@Explosion Pills评论和jsFiddle
<强> DEMO 强>
function replaceHtml( string_to_replace )
{
return string_to_replace.replace(/ /g, ' ').replace(/<br.*?>/g, '\n');
}
也许这会解决你的\n
问题 - 需要jQuery。
function replaceHtml(string_to_replace) {
return $("<div>").append(string_to_replace.replace(/ /g, ' ').replace(/<br.*?>/g, ' ')).text();
}
答案 1 :(得分:1)
如果我错了,请纠正我,但不应该是$.replaceAll()
,因为它不是JS的jQuery函数吗?
或纯{Javascript中的replace()
?
答案 2 :(得分:0)
你不需要在那里使用jQuery:
function replaceHtml( string_to_replace )
{
var result = string_to_replace.replace(/\ /g, ' ').replace(/<br\s*\/?>/mg,"\n\r"); // or "\n", "\r", "\r\n"
return result;
}