2009-06-12 23 views
24

Actualmente estoy poniendo nuevas líneas de cuerdas a través de uno de estos dos métodos:¿Cómo puedo escribir una nueva línea en una cadena en ColdFusion?

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

O

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

¿Hay algo más parecido a la forma en que Java/C++? Algo de la misma familia que quiero decir:

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

Respuesta

24

Su manera es correcta. No hay soporte para \ n o \ r en CF. Desde el Live Docs

  • Chr (10) devuelve un carácter de avance de línea
  • Chr (13) devuelve un carácter de retorno de carro
  • La cadena Chr de dos caracteres (13) & Chr (10) devuelve una ventanas de nueva línea
+1

Solo tenga en cuenta que Chr (13) & Chr (10) no funciona en un simple . Debe tenerlo en javascript o en alguna otra parte para poder obtener t él salta a la vista para mostrar. He estado descubriendo esto de una manera divertida. –

+1

Funciona bien en un cfoutput para mí. Por supuesto, no creará un corte en html porque html lo trata simplemente como otro espacio en blanco, pero si lo hace, verá el salto. Tal vez solo necesitas un
? –

+0

Posiblemente. Solo quería informar que si las personas tienen problemas con él, como yo, deberían intentar ponerlo en javascript o algo para ver si eso lo soluciona. –

4

No directamente en la FQ, lo dejaré a los tipos CF-Java para decir si se puede utilizar un método Java directamente en una var CF para lograr lo que quiere, pero ...

Usted podría utilizar cfsavecontent poner saltos de línea naturales en:

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

Entonces comprobarlo con:

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

Tenga en cuenta que Trim() está ahí para deshacerse del primer y último salto de línea si no los quiere.

9

yo uso esto:

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

Marc, prescindiremos de las comillas y # 's-

+8

¡romperá las cotizaciones y librará las señales de mis manos frías y muertas Nathan! –

+0

eso no es trabajo. –

14

Si usted está en el desarrollo independiente de la plataforma, que puede hacer:

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

Por ejemplo, en su alto nivel application.cfm/cfc o en otro lugar y que utiliza.

+0

eso es genial. Soy nuevo en CF, así que aún no he aprovechado el potencial del código java subyacente ... – Kip

+1

Utilizo esto exclusivamente, es fácil decir "solo correremos en Windows", pero va a ser un día triste cuando tienes que cambiar cientos de líneas de código dispersas porque eras perezoso. –

1

Me preguntaba si algo como esto funcionaría:

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

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

desgracia. No: O (

+1

Esto alimenta una cadena CF a .init(). Y una cadena CF no entiende "\ n". Ese es un tipo de problema al que me gusta referirme como "abrelatas en una lata". :-) – Tomalak

+0

¡buen intento! :) – Kip

0

CF8 CFMAIL formateado con saltos de línea y sin añadir nada parece que Adobe proporcionaría algo específico sobre "por qué" y una simple solución temporal. ... Jurisdictionary

Cuestiones relacionadas