[ColdFusion] リストを表示

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

例題

以下のカンマ区切りの文字列をカンマで分解して表示する。
東京,神奈川,千葉,埼玉

解答

<cfset a = "東京,神奈川,千葉,埼玉">
<cfloop index="idx" list="#a#">
     <cfoutput>#idx#<br></cfoutput>
</cfloop>

 

神奈川と千葉の間にカンマが3つあったとしても
表示は同じです。

 

<cfset a = "東京,神奈川,,,千葉,埼玉">
<cfloop index="idx" list="#a#">
     <cfoutput>#idx#<br></cfoutput>
</cfloop>

 

なんと!

ColdFusionでは空データが無視されています。
ListLen関数でも項目数は4となります。

 

1995年の初期の頃は必要なかったのかもしれませんが、
基幹業務などのCSVデータを取り込む場合は
注意が必要です。

 

個人的には
「,,」の文字列があった場合は「,NULL,」に変換、
1バイト目が「,」の場合「NULL,」に変換、
最後の文字が「,」の場合「,NULL」に変換、
その後リスト処理をやって、要素がNULLの場合は無視、
としました。

 

今考えると「NULL」という文字自体がデータであるかもしれないので
タブコードなどありえないものに変換したほうがいいでしょう。

 

タブコード自体も区切りとして使う場合があるので、
「|」とか。

または外部の関数を使うとか。

 

外部関数なら、こちらを利用しました。
http://www.bennadel.com/blog/991-CSVToArray-ColdFusion-UDF-For-Parsing-CSV-Data-Files.htm

 

ColdFusion10からは、関数のパラメータが増えて考慮されているようです。

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

この記事に関連する記事一覧

最近の投稿
カテゴリー
タグ
アーカイブ
プロフィール