知らなかったのでメモ。今まで回りくどいことをしていた…。
例えば123-456-789
をハイフン区切りで3番目789
だけ取得したいなんてとき。配列に変換して目的の文字列を取得していましたよ。
<CFSET sTest = "123-456-789">
<CFSET aTest = listToArray(sTest, "-")>
<CFDUMP var="#aTest[3]#">
もしくは、以下のように1行にしたり。でもなんかかっこ悪いですね。
<CFSET sTest = "123-456-789">
<CFDUMP var="#listToArray(sTest, "-")[3]#">
しかし!getToken
関数を使えば一発でn番目の文字列だけ取得できます。
<CFSET sTest = "123-456-789">
<CFDUMP var="#getToken(sTest, 3, "-")#">
しかも配列方式だと存在しない位置の文字列を取得しようとした場合にエラーになるのでArrayLen
で長さチェックが必須なんですが、getToken
関数なら[empty string]が返るだけなので便利です。
ただし、分解後の文字列を全て使いたいという場合には普通にlistToArray
で配列にしといたほうが便利ですね。