【发布时间】:2018-11-13 17:42:41
【问题描述】:
我正在使用 react 并从持有 cmets 的 api 中提取。有多个带有br 标签的 cmets,因为 api 来自 php 用户。我正在尝试用实际换行符替换每个字符串中的br 标签。我也在使用 react,所以 jQuery 是不行的。
这就是我所拥有的:
this.state.notes.forEach((note) => {
const fixed = note.body.replace(/<br>/g, "\r\n");
rows.push(<ListGroupItem hover href="#" className="whiter" key=
{note.id}>
<div className="d-flex justify-content-between">
<h5 className="mb-1">{ note.name }</h5>
<small>{ commentDate }</small>
</div>
<p className="mb-1">{ fixed }</p>
</ListGroupItem>)
}
我已经用空格替换了它并且它工作,但它没有与换行符一起工作。我哪里错了?
编辑 1:@T.J. Crowder 我添加了它在页面上的显示方式。 rows 是一个空数组,ListGroupItem 来自 MDBootstrap。
【问题讨论】:
-
“我已经用空格替换了它,它可以工作,但它没有与换行符一起工作。” 修改后如何渲染字符串?
-
你可以试试这个 text.split( "
" ).join( "\n" ) -
从根本上说,如果您想要 cmets 的 text 而不是 cmets 的 HTML,则需要让另一端向您发送文本而不是 HTML .通过向您发送 HTML,他们为您提供了大量 的工作要做。您不想just 用换行符替换
<br>,因为显然您收到的是 HTML,因此您可能需要处理 HTML 的其他方面,例如命名字符实体(&lt;、&amp;等)或数字字符实体(例如&#003c;)。您必须担心 XSS 和其他各种问题。 -
@HemadriDasari - OP 的 已经 获得了用换行符替换
<br>的有效代码。将它们指向 不同的 方式是没有用的。 :-) -
我很确定它不会向我发送 HTML,只是字符串。字符串包含最终出现在字符串中的
br标记。我只想从字符串中删除标签并使它们成为实际的换行符,因为它们看起来并不好用空格分隔。
标签: javascript reactjs replace line-breaks