3

私は形式のリストを持っています

"4186.0,7573.0,4300.0,9479.0,9488.0,10642.0,7987.0,9480.0 "

".0"一度に数字からすべてを削除する、コールドフュージョンで利用可能な関数はありますか?

ありがとうございました。

4

4 に答える 4

2

barnyr が提案したように、私は通常 INT を使用して数値の小数を削除しますが、それをリストではなく単一の文字列として扱いたい場合は、reReplace (Nathan Strutz のアイデアを詳しく説明するため) を使用して、次のようなことを行うことができます。

<cfset listOfNums = "4186.0,7573.540,4300.434,9479.,9488.0,10642.0,7987.0,9480.0">
<cfset listOfNums = reReplace(listOfNums, "\.[0-9]*", "", "all")>

結果は次のとおりです。4186,7573,4300,9479,9488,10642,7987,9480

また、数値が続かない場合でも小数点を削除します。

于 2012-11-29T17:53:44.587 に答える
2

これを行うための単純な機能はありませんが、できることはたくさんあります。

リストとnumberFormat()各項目をループして、リストに戻すか、新しいリストを作成できます。これは、処理とプログラミングの両方で非効率的です。

リストは単なる文字列であるため、数値の小数部分を単純な文字列 replace: に置き換えることができますreplace("123.0,456.0", ".0", "", "ALL")。リストが「.0」以外の異なる 10 進数になる場合は、その置換関数を正規表現にアップグレードして、数字のパターンをキャッチできます。

于 2012-11-29T16:51:47.150 に答える
2

UnderscoreCFライブラリから使用map()して、この問題を適切に解決できます (CF 10 または Railo 4)。

_ = new Underscore();

listOfNums = "4186.0,7573.0,4300.0,9479.0,9488.0,10642.0,7987.0,9480.0 ";

arrayOfNums = _.map(listOfNums, function(num){
  return round(num);
});

result = arrayToList(arrayOfNums);

map()変換関数を介してコレクション内の各値をマッピングすることにより、値の新しい配列を生成します。これにより、結果をより詳細に制御できます。

注: UnderscoreCF を書きました。

于 2012-11-29T18:27:19.483 に答える
0

Int() (他のほとんどの言語の floor() 関数に相当) 関数が必要なようです:

ただし、 Int() 関数を適用して、リストを反復処理する必要があります。

于 2012-11-29T17:36:04.850 に答える