2009-06-12 29 views
24

Hiện nay tôi đang đưa dòng mới trong chuỗi thông qua một trong hai phương pháp:Làm thế nào tôi có thể viết một dòng mới trong một chuỗi trong Coldfusion?

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

HOẶC

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

Có điều gì giống như cáC++ cách Java/C? Điều gì đó tương tự như thế này:

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

Trả lời

24

Cách của bạn là chính xác. Không có hỗ trợ cho \ n hoặc \ r trong CF. Từ Live Docs

  • Chr (10) trả về một nhân vật linefeed
  • Chr (13) trả về một nhân vật vận chuyển trở lại
  • Hai ký tự chuỗi Chr (13) & Chr (10) trả về một cửa sổ xuống dòng
+1

Chỉ cần lưu ý rằng Chr (13) & Chr (10) không hoạt động trong một đơn giản .Bạn cần phải có nó trong javascript hoặc cái gì khác để nhận được t anh ta mới vạch ra. Tôi đã khám phá ra cách thú vị này. –

+1

Nó hoạt động tốt trong một cfoutput cho tôi. Tất nhiên nó sẽ không tạo ra một break trong html bởi vì html xử lý nó như chỉ là một khoảng trắng khác, nhưng nếu bạn làm một nguồn xem, bạn sẽ thấy sự phá vỡ. Có lẽ bạn chỉ cần một
? –

+0

Có thể. Tôi chỉ muốn báo cáo rằng nếu mọi người đang gặp rắc rối với nó, như tôi, họ nên thử đặt nó trong javascript hoặc một cái gì đó để xem nếu điều đó sửa chữa nó. –

4

Không trực tiếp trong CF, tôi sẽ để nó cho CF-Java dudes để nói bạn có thể sử dụng phương pháp Java trực tiếp trên CF var để đạt được những gì bạn muốn, nhưng ...

Bạn có thể sử dụng cfsavecontent đặt ngắt dòng tự nhiên trong:

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

Sau đó kiểm tra xem nó với:

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

Lưu ý rằng Trim() có để loại bỏ các ngắt dòng đầu tiên và cuối cùng nếu bạn không muốn chúng.

9

tôi sử dụng này:

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

Marc, chúng ta hãy làm mà không có dấu ngoặc kép và # 's-

+8

bạn sẽ trích xuất dấu ngoặc kép và dấu hiệu ra khỏi bàn tay lạnh, chết của Nathan! –

+0

không hoạt động. –

14

Nếu bạn là thành phát triển nền tảng độc lập, bạn có thể làm:

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

Ví dụ, trong application.cfm/cfc hoặc ở một nơi khác cấp cao của bạn và sử dụng.

+0

khá tuyệt. Tôi mới sử dụng CF, vì vậy tôi chưa thực sự khai thác tiềm năng của mã java cơ bản ... – Kip

+1

Tôi sử dụng độc quyền này, dễ nói "chúng tôi sẽ chỉ chạy trên Windows", nhưng nó sẽ là một ngày buồn khi bạn phải thay đổi hàng trăm dòng mã phân tán vì bạn lười biếng. –

1

Tôi đã tự hỏi nếu một cái gì đó như thế này sẽ làm việc:

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

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

Alas no:. O (

+1

Điều này cung cấp một chuỗi CF tới .init(). Và một chuỗi CF không hiểu "\ n". Đó là một loại vấn đề tôi muốn gọi là "có thể mở trong một lon". :-) – Tomalak

+0

thử tốt mặc dù! :) – Kip

0

CF8 định dạng cfmail với dòng nguồn cấp dữ liệu và mà không cần thêm bất cứ điều gì Có vẻ như Adobe sẽ cung cấp một cái gì đó cụ thể về ... Jurisdictionary

Các vấn đề liên quan