34

目前我正在通过以下两种方法之一在字符串中添加换行符:

<cfset someStr="This is line 1" & Chr(10) & "This is line 2" & Chr(10) & "This is line 3" />

或者

<cfset NL=Chr(10) />
<cfset someStr="This is line 1#NL#This is line 2#NL#This is line 3" />

有什么更像 Java/C++ 的方式吗?我的意思更像是这样的:

<cfset someStr="This is line 1\nThis is line 2\nThis is line 3" />
4

7 回答 7

35

你的方法是正确的。CF 中不支持 \n 或 \r。来自实时文档

  • Chr(10) 返回换行符
  • Chr(13) 返回一个回车符
  • 两个字符的字符串 Chr(13) & Chr(10) 返回一个 Windows 换行符
于 2009-06-12T15:18:15.677 回答
21

如果您从事独立于平台的开发,您可以执行以下操作:

<cfset NL = CreateObject("java", "java.lang.System").getProperty("line.separator")>

例如,在您application.cfm/cfc或其他地方的高级别的地方并使用它。

于 2009-06-12T16:12:55.060 回答
11

我用这个:

<cfset br = "#chr(13)##chr(10)#">
<cfset someStr="This is line 1#br#This is line 2#br#This is line 3" />
于 2009-06-12T16:04:03.600 回答
5

不是直接在 CF 中,我会让 CF-Java 的家伙说你是否可以直接在 CF var 上使用 Java 方法来实现你想要的,但是......

您可以使用 cfsavecontent 将自然换行符放入:

<cfsavecontent variable="someStr">
This is line 1
This is line 2
This is line 3
</cfsavecontent>

然后检查它:

<cfoutput>
<pre>#Trim(someStr)#</pre>
</cfoutput>

请注意,如果您不想要第一个和最后一个换行符,则 Trim() 可以消除它们。

于 2009-06-12T15:14:03.393 回答
0

我想知道这样的事情是否可行:

<cfset str = CreateObject("java", "java.lang.String").init("Line 1\nLine 2\nLine 3")>

<cfoutput>
<pre>#str#</pre>
</cfoutput>

唉,没有:O(

于 2009-06-12T16:13:46.057 回答
0

CF8 格式的 cfmail 带有换行符,不添加任何内容。似乎 Adob​​e 会提供一些关于“为什么”的具体内容和一个简单的解决方法。... 管辖权

于 2010-12-27T13:14:56.613 回答
0

我正在寻找一种在 中输出新行的方法<cfscript>,所以我想我会将答案留给以类似方式到达的其他人:

writeDump(variable); // writeDump will not produce a new line.
writeOutput("<br>"); // you have to use writeOutput.

writeOutput作为 html 附加到页面输出流,因此您需要编写 html 以将其输出(这意味着您还可以包括&nbsp;为缩进添加空格)

于 2018-12-11T16:27:04.063 回答