2009-06-12 9 views
24

Actuellement, je suis en train de nouvelles lignes dans les chaînes par l'une de ces deux méthodes:Comment écrire une nouvelle ligne dans une chaîne dans ColdFusion?

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

OU

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

Y at-il quelque chose de plus comme la façon dont Java/C++? Quelque chose comme cela, je veux dire:

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

Répondre

24

Votre chemin est correct. Il n'y a pas de support pour \ n ou \ r dans CF. De l'Live Docs

  • Chr (10) renvoie un caractère de saut de ligne
  • Chr (13) renvoie un caractère de retour chariot
  • La chaîne de deux caractères Chr (13) & Chr (10) renvoie un windows newline
+1

Il suffit de noter que Chr (13) et Chr (10) ne fonctionne pas dans un simple . Vous devez l'avoir en javascript ou autre chose afin de obtiens t il souligne à nouveau. J'ai découvert cela de façon amusante. –

+1

Cela fonctionne bien dans un cfoutput pour moi. Bien sûr, il ne créera pas de coupure dans html parce que html le traite comme un autre espace, mais si vous faites une source de vue, vous verrez la coupure. Peut-être que vous avez juste besoin d'un
? –

+0

Peut-être. Je voulais juste signaler que si les gens ont des problèmes avec, comme je l'étais, ils devraient essayer de le mettre en javascript ou quelque chose pour voir si cela résout. –

4

Pas directement dans les FC, je laisse aux dudes CF-Java pour dire si vous pouvez utiliser une méthode Java directement sur un var CF pour obtenir ce que vous voulez, mais ...

Vous pouvez utiliser cfsavecontent pour mettre les sauts de ligne naturelles:

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

vérifiez ensuite avec:

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

Notez que le Trim() est là pour se débarrasser de la première et dernière coupure de ligne si vous ne les voulez pas.

9

j'utilise ceci:

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

Marc, faisons sans les guillemets et #s-

+8

vous déchirerez des citations et des signes de livre de mes mains froides et mortes Nathan! –

+0

ce n'est pas le travail. –

14

Si vous êtes dans le développement de la plate-forme indépendante, vous pouvez le faire:

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

Par exemple, dans votre application.cfm/cfc ou ailleurs de haut niveau et l'utiliser.

+0

c'est plutôt cool. Je suis nouveau à CF, donc je n'ai pas encore vraiment exploité le potentiel du code Java sous-jacent ... – Kip

+1

Je l'utilise exclusivement, c'est facile de dire "nous ne fonctionnerons que sur Windows", mais ça va être un triste jour où vous devez changer des centaines de lignes de code éparpillées parce que vous étiez paresseux. –

1

Je me demandais si quelque chose comme ça fonctionnerait:

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

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

Hélas non:. O (

+1

Cela alimente une chaîne CF en .init(). Et une chaîne CF ne comprend pas "\ n". C'est un genre de problème que j'aime appeler "ouvre-boîte dans une boîte". :-) – Tomalak

+0

bien essayé! :) – Kip

0

cfmail formaté CF8 avec la ligne et sans ajouter quoi que ce soit On dirait que Adobe fournirait quelque chose de spécifique au sujet "pourquoi" et une simple contournement ... Jurisdictionary

Questions connexes