如何用<br />替换CR+LF?

Posted

技术标签:

【中文标题】如何用<br />替换CR+LF?【英文标题】:How to replace CR+LF with <br />? 【发布时间】:2012-07-05 01:41:12 【问题描述】:

例如:

用户提交带有&lt;textarea name="mytext" cols="35" rows="2"&gt;&lt;/textarea&gt; 的表单并在其中按ENTER。如何将 CR-LF 替换为 &lt;br /&gt;

【问题讨论】:

【参考方案1】:

CF为此提供了一个名为ParagraphFormat()的函数:

<cfset form.userText = paragraphFormat(form.usertext)/>

来自帮助文档 -

替换字符串中的字符:

带空格的单个换行符(CR/LF 序列) 带有 html 段落标签的双换行符 (&lt;p&gt;)

它可能比你想要的更多,因为它还会查找双换行符并添加&lt;p&gt;&lt;/p&gt; 标签。

Ben 还有一个增强版本(UDF),称为paragraph2,可以轻松修改以获得您想要的确切效果。这是链接:

http://www.cflib.org/udf/ParagraphFormat2

【讨论】:

我认为 ParagraphFormat2 在这种情况下可能会更好,因为它确实将单换行符变成“”(以及双换行符变成 HTML 段落)。【参考方案2】:

&lt;cfset localVars.ReturnString = REReplace(localVars.ReturnString, "\r\n|\n\r|\n|\r", "&lt;br /&gt;", "all")&gt;

你不应该自然而然地点击\n\r,但如果它是由忘记正确顺序的开发人员插入的,就会发生这种情况。

这是一个更通用的函数的子集,用于根据您正在执行的操作(例如,必须以 Windows/Linux 格式、.ics 文件、html、cfheaders、等)

<cffunction name="ReplaceEOL" access="public" output="false" returntype="string" hint="Replaces EOL codes with other characters">
    <cfargument name="String" required="true" type="string">
    <cfargument name="ReplaceWith" required="true" type="string">

    <cfreturn REReplace(Arguments.String, "\r\n|\n\r|\n|\r", Arguments.ReplaceWith, "all")>
</cffunction>

【讨论】:

我刚刚修复了您的第一个示例并简化了代码,但意识到这实际上不会按预期工作 - 单独的 \r\n 在组合版本之前得到匹配(最早匹配获胜大多数现代正则表达式),因此需要将它们移动到交替的末尾 - .e。 \r\n|\n\r|\n|\r - 我也继续修复了这个问题,但只是想指出它,因为记住它很有用。 虽然我个人总是只删除所有回车,然后只需要处理换行符,例如String.replaceAll('\r','').replaceAll('\n','&lt;br/&gt;')【参考方案3】:

在显示值时,我将使用ParagraphFormat 函数,而不是用 br 替换它。

【讨论】:

【参考方案4】:

您可以使用 paragraphFormat() 函数,但有时替换函数可以帮助您可视化实际发生的情况。

一个例子:&lt;cfset TheText=replace("#form.myText#",chr(13)&amp;chr(10),"&lt;br /&gt;","all")&gt;

这会将所有回车换行符替换为 html 换行符

【讨论】:

【参考方案5】:

我其实更喜欢这样的:

<p>#REReplace(theParagraphText, "[#chr(10)#]+", "</p><p>", "ALL")#</p>

因为它将多个换行符组合成一个单独的分段符。

【讨论】:

[#chr(10)#]+ 是写\n+ 的冗长方式 - 但不管怎样,由于它不处理回车,这不如existing answer given by nosilleg。

以上是关于如何用<br />替换CR+LF?的主要内容,如果未能解决你的问题,请参考以下文章

如何用 <br /> 元素替换字符串中的所有换行符?

如何用 <br/> 替换某些回车换行符后跟破折号?

如何用 <br/> 替换换行符或 \r\n?

shell 用逗号替换 cr\lf

如何用三元运算符(?:)替换“if”语句?

如何用matlab做正弦曲线拟合