2009-06-12 2 views
24

В настоящее время я ставлю новые строки в строках через один из этих двух методов:Как написать строку новой строки в ColdFusion?

<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" /> 

ответ

24

Ваш путь правильный. В CF нет поддержки \ n или \ r. Из Live Docs

  • Chr (10) возвращает символ перевода строки
  • Chr (13) возвращает символ возврата каретки
  • Два-символьная строка Chr (13) & Chr (10) возвращает Окна новой строки
+1

Просто помните, что Chr (13) & Chr (10) не работает в простой . Вам нужно иметь его в javascript или что-то еще, чтобы получить t он переворачивает новые строки. Я открываю для себя это весело. –

+1

Он отлично работает для меня. Конечно, это не приведет к перерыву в html, потому что html рассматривает его как просто еще один пробел, но если вы используете источник просмотра, вы увидите перерыв. Может быть, вам просто нужен
? –

+0

Возможно. Я просто хотел сообщить, что если у людей возникают проблемы с этим, как и я, им следует попробовать поместить его в javascript или что-то посмотреть, исправляет ли он это. –

4

Не прямо в CF, я оставлю его на чуваков CF-Java сказать, можно ли использовать метод Java непосредственно на CF вар, чтобы достичь того, чего вы хотите, но ...

Вы можете использовать cfsavecontent поставить естественные разрывы строк в:

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

Затем проверьте его:

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

Обратите внимание, что Trim() существует, чтобы избавиться от первого и последнего разрывов строк, если вы их не хотите.

9

я использую это:

<cfset br = "#chr(13)##chr(10)#"> 
<cfset someStr="This is line 1#br#This is line 2#br#This is line 3" /> 
+9

Марк, давайте обойтись без кавычек и # s-

+8

вы разорвите цитаты и знаки фунта из моих холодных, мертвых рук Натана! –

+0

это не работа. –

14

Если вы в независимый от платформы разработки, вы можете сделать:

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

Например, в вашем application.cfm/cfc или где-нибудь еще на высоком уровне и использовать.

+0

это довольно круто. я новичок в CF, поэтому я еще не использовал потенциал базового кода Java ... – Kip

+1

Я использую это исключительно, его легко сказать «мы будем работать только в Windows», но это будет печальный день, когда вам приходится менять сотни строк кода, рассеянных, потому что вы ленились. –

1

мне было интересно, если что-то вроде этого не будет работать:

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

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

Увы нет:. O (

+1

Этот канал передает строку CF в .init(). И строка CF не понимает «\ n». Это своего рода проблема, которую мне нравится называть «консервооткрывателем в банке». :-) – Tomalak

+0

хорошая попытка хотя! :) – Kip

0

CF8 отформатирован cfmail с перевода строки и ничего не добавляя Похоже, Adobe представит что-то конкретное о «почему» и простой обход. ... Jurisdictionary

Смежные вопросы