【ColdFusion】リストの切り取り処理

リストについて指定した個数だけ切り出してくれる関数がなかったので、
酔った勢いで作ってみました。
※酔っているので最低限動くことしか確認していません。

リストを配列に変換してArraySlice関数を使って切り出して、
配列からリストに変換しているだけの簡単なものです_(:3」∠)_

何となく作ってみたListSlice関数とサンプルコードは下記の通りです。

<!--- リスト向け切り取り関数 --->
<cffunction name="ListSlice" returnType="String" hint="指定した個数のリストを返す">
    <cfargument name="listData" type="String" required="true" hint="リストデータ">
    <cfargument name="getListNum" type="Numeric" required="true" hint="取得するリストの個数">
    <cfargument name="delimiter" type="String" required="false" default="," hint="区切り文字">

    <cfscript>
        try {
            listLenCnt = ListLen(ARGUMENTS.listData, ARGUMENTS.delimiter);
            if (ARGUMENTS.getListNum GT listLenCnt) {
                return ARGUMENTS.listData;
            }

            slicedArrayData = ArraySlice(ListToArray(ARGUMENTS.listData, ARGUMENTS.delimiter), 1, ARGUMENTS.getListNum);

            return ArrayToList(slicedArrayData, ARGUMENTS.delimiter);
        } catch(any e) {
            throw(message="#e.message#");
        }
    </cfscript>
</cffunction>

<cfscript>
    listData = "1,2,3,4,5,6,7,8,9,0";

    // 実行結果は「1,2,3,4,5」
    WriteDump(ListSlice(listData, 5));

</cfscript>

知多を飲み干してしまったので次は何を買おう…

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です