将文本区域中的 <br /> 替换为行分隔符(Javascript)
Posted
技术标签:
【中文标题】将文本区域中的 <br /> 替换为行分隔符(Javascript)【英文标题】:Replace <br /> in a textarea with a line separator ( Javascript ) 【发布时间】:2013-02-19 22:39:05 【问题描述】:我想这将在两分钟内得到答复,但我无法谷歌找到解决方案。
已尝试:this、this
我有一个文本区域,它首先从服务器接收一些数据(动态使用 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');
【问题讨论】:
我不确定,但试试 '\n\r' 而不是 "\n\r" (单引号替换双引号) 似乎工作:jsfiddle.net/Xfffg @joDev 单引号和双引号在javascript中是等价的 replaceAll 不是函数 @Explosion Pills:不敢相信,但它对我不起作用..function replaceHtml( string_to_replace ) var result = string_to_replace.replace(/&nbsp;/g, ' ').replace(/<br.*?>/g, '\n'); return result;
【参考方案1】:
基于@Explosion Pills 评论和 jsFiddle
DEMO
function replaceHtml( string_to_replace )
return string_to_replace.replace(/ /g, ' ').replace(/<br.*?>/g, '\n');
更新基于New line in text area
Updated DEMO
也许这会解决您与 \n
相关的问题 - 需要 jQuery。
function replaceHtml(string_to_replace)
return $("<div>").append(string_to_replace.replace(/ /g, ' ').replace(/<br.*?>/g, ' ')).text();
【讨论】:
我正在使用 Mozilla 19.0,它对我来说运行良好。您是在 jsFiddle 上还是在您自己的解决方案中查看它? 在 jsFiddle 上它可以工作,而不是在我的解决方案上。我只是试图用这个替换 '\n' 部分:来自this answer 的'\u2028' 它适用于我的解决方案,但我有一种预感,这不是最好的方法。。我仍然会给你一个好的代码+1,但直到我弄清楚 textarea 中发生了什么,我不知道是否可以将此问题标记为已回答。 您能否提供更多代码...您是在文本区域中输入此信息吗?什么叫replaceHtml
?你能在 jsfiddle 中重现 \n
的问题吗?
如果我将解决方案更改为 \u2028
,它在我的机器上的 Chrome 或 Firefox 上不起作用。
有很多代码在运行,我不认为我可以在 jsFiddle 中重现问题。我可以写下正在发生的逻辑,以及正在发生的事情的一些源代码,但这将是很多代码,我认为它不会帮助您解决我的问题。顺便说一下,#13#10 的事情也不适用于 chrome..【参考方案2】:
如果我错了,请纠正我,但它不应该是$.replaceAll()
,因为它是一个 jQuery 函数而不是 JS?
还是纯 Javascript 中的 replace()
?
【讨论】:
老实说:不知道有一个 $.replaceAll() :)【参考方案3】:你不需要在那里使用 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;
【讨论】:
以上是关于将文本区域中的 <br /> 替换为行分隔符(Javascript)的主要内容,如果未能解决你的问题,请参考以下文章