2009-06-12 10 views
24

Obecnie Kładę newlines w ciągach przez jedną z tych dwóch metod:Jak mogę napisać znak nowego wiersza w ColdFusion?

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

LUB

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

Czy jest coś bardziej jak Java/C++ sposób? Coś bardziej jak to mam na myśli:

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

Odpowiedz

24

Twoja droga jest poprawna. Brak wsparcia dla \ n lub \ r w CF. Z Live Docs

  • Chr (10) zwraca postać Linefeed
  • Chr (13) zwraca znak powrotu karetki
  • Dwukrotny ciąg znaków Chr (13) & Chr (10) zwraca okna nowalinia
+1

Po prostu zauważ, że Chr (13) i Chr (10) nie działa w prostym . Musisz mieć go w javascript lub coś innego, aby dostać t on przygotowuje się do pokazania. Odkrywam to w zabawny sposób. –

+1

To działa dobrze w moim przypadku. Oczywiście nie spowoduje to przerwy w html, ponieważ html traktuje ją jako kolejną białą spację, ale jeśli zrobisz źródło widoku, zobaczysz przerwę. Może potrzebujesz tylko
? –

+0

Prawdopodobnie. Chciałem tylko zgłosić, że jeśli ludzie mają z tym problem, tak jak ja, powinni spróbować umieścić go w javascript lub coś, aby sprawdzić, czy to naprawi. –

4

Nie bezpośrednio w CF, zostawiam go do kolesi CF-Java, aby powiedzieć, czy można użyć metody Java bezpośrednio na CF var, aby osiągnąć to, co chcesz, ale ...

można użyć cfsavecontent umieścić naturalnych przerw w linii:

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

Następnie sprawdzić go z:

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

Zwróć uwagę, że funkcja Trim() jest dostępna, aby pozbyć się pierwszej i ostatniej linii, jeśli ich nie chcesz.

9

używam to:

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

Marc, zróbmy bez cytatów i # 's-

+8

z rozdrapanych, martwych rąk Nathan wyrwiesz cytaty i znaki funta! –

+0

to nie działa. –

14

Jeśli do rozwoju niezależny od platformy, można zrobić:

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

na przykład w swoim wysokim poziomie application.cfm/cfc lub gdzieś indziej i użyć.

+0

To całkiem fajne. Jestem nowicjuszem w CF, więc jeszcze nie wykorzystałem potencjału podstawowego kodu java ... – Kip

+1

Używam tego wyłącznie, łatwo powiedzieć "będziemy tylko uruchamiać w systemie Windows", ale to będzie smutny dzień, kiedy musisz zmienić setki wierszy kodu rozrzuconych, ponieważ byłeś leniwy. –

1

Zastanawiałem się, czy coś jak to będzie działać:

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

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

Niestety nie. O (

+1

Powoduje przekazanie łańcucha CF do .init(). A ciąg CF nie rozumie "\ n". To rodzaj problemu, który lubię nazywać "otwieraczem do puszek w puszce". :-) – Tomalak

+0

Dobra próba! :) – Kip

0

CF8 sformatowana cfmail z linii żywi i bez dodawania czegokolwiek Wygląda Adobe zapewniłaby czegoś konkretnego o "dlaczego" i proste obejście ... ... Jurisdictionary