Как я могу написать новую строку в строке в 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" />

Ответы на вопрос(7)

вы можете сделать:

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

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

 Vincent P07 янв. 2015 г., 08:50
Я использую это исключительно, легко сказать «мы будем работать только на Windows», но это будет печальный день, когда вам придется менять сотни строк кода, разбросанных по той причине, что вы ленивы.
 Kip12 июн. 2009 г., 20:01
это круто. я новичок в CF, так что я еще не раскрыл потенциал базового Java-кода ...

я оставлю это чувакам CF-Java, чтобы сказать, можете ли вы использовать Java-метод непосредственно в var 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 () предназначен для того, чтобы избавиться от первого и последнего разрывов строк, если они вам не нужны.

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

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

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

Увы нет: O (

 Tomalak12 июн. 2009 г., 18:22
Это передает строку CF в .init (). И строка CF не понимает "\ n". Это проблема, которую я люблю называть «консервный нож в банке». :-)
 Kip12 июн. 2009 г., 20:00
хорошая попытка, хотя! :)

-либо. Похоже, что Adobe предоставит что-то конкретное по поводу «почему» и простой обходной путь. ... Юрисдикция

Решение Вопроса

Live Docs

Chr (10) возвращает символ перевода строкиChr (13) возвращает символ возврата кареткиДвухсимвольная строка Chr (13) & Chr (10) возвращает перевод строки Windows
 Nick Van Brunt11 июл. 2013 г., 20:23
Это прекрасно работает в cfoutput для меня. Конечно, это не создаст разрыв в html, потому что html рассматривает его как еще один пробел, но если вы сделаете источник просмотра, вы увидите разрыв. Может быть, вам просто нужна фотография?
 Riot Goes Woof09 июл. 2013 г., 16:49
Просто обратите внимание, что Chr (13) и Chr (10) не работают в простом <cfoutput>. Вы должны иметь это в javascript или что-то еще, чтобы показать переводы строки. Я обнаружил, что это забавный способ.
 Riot Goes Woof12 июл. 2013 г., 03:56
Возможно. Я просто хотел сообщить, что если у людей возникают проблемы с этим, как у меня, они должны попытаться поместить это в javascript или что-то еще, чтобы посмотреть, исправит ли это.

Я искал способ вывести новую строку в<cfscript>Так что я решил оставить свой ответ для всех, кто прибыл подобным образом:

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

writeOutput добавляет к потоку вывода страницы как html, поэтому вам нужно написать html для его вывода(это означает, что вы также можете включить&nbsp; добавить пробелы для отступа).

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

<cfset br = "#chr(13)##chr(10)#">
<cfset someStr="This is line 1#br#This is line 2#br#This is line 3" />
 marc esher12 июн. 2009 г., 23:28
Вы вырвете кавычки и загоните знаки из моих холодных мертвых рук, Натан!
 Nathan Strutz12 июн. 2009 г., 19:56
Марк, давайте обойдемся без кавычек и # 's- <cfset br = chr (13) & chr (10) />
 Saravana Kumar17 апр. 2017 г., 13:33
это не работа

Ваш ответ на вопрос