Coldfusion 从Ids列表中删除浮动部件

Coldfusion 从Ids列表中删除浮动部件,coldfusion,Coldfusion,我有一份格式的清单 "4186.0,7573.0,4300.0,9479.0,9488.0,10642.0,7987.0,9480.0 " coldfusion中是否有任何函数可以一次从数字中删除所有“.0” 谢谢。这不是一个简单的函数,但是您可以做很多事情 您可以循环浏览列表和每个项目,将其放回列表或创建新列表。这在处理和编程方面都是低效的 因为您的列表只是一个字符串,所以您可以用一个简单的字符串替换数字的小数部分:replace(“123.0456.0”、“0.0”、“全部”)。如果列表中

我有一份格式的清单

"4186.0,7573.0,4300.0,9479.0,9488.0,10642.0,7987.0,9480.0 "
coldfusion中是否有任何函数可以一次从数字中删除所有
“.0”


谢谢。

这不是一个简单的函数,但是您可以做很多事情

您可以循环浏览列表和每个项目,将其放回列表或创建新列表。这在处理和编程方面都是低效的

因为您的列表只是一个字符串,所以您可以用一个简单的字符串替换数字的小数部分:
replace(“123.0456.0”、“0.0”、“全部”)
。如果列表中的小数位数与“.0”不同,则可以将替换函数升级为正则表达式以捕获数字模式。

听起来像Int()(在大多数其他语言中相当于floor()函数)函数可能就是您想要的:


您仍然需要使用Int()函数对列表进行迭代。

我通常使用Int删除数字的小数点,就像barnyr建议的那样,但如果您想将其视为单个字符串而不是列表,可以使用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")>

结果是:
41867573430097994881064279879480

即使后面没有数字,也会删除小数点。

您可以使用库中的
map()
优雅地解决此问题(在CF 10或Railo 4中)

map()
通过转换函数映射集合中的每个值,从而生成一个新的值数组。这允许您对结果有更多的控制


注意:我写了下划线ECF。

它总是存在吗?而且总是
.0
?同样出于好奇,用例是什么?我只是想知道是否还有其他选择。我发布了一个答案,但因为它只是阐述了这个想法,所以我试图删除它,重新替换看起来像是
结果是:
41867573430094994881064279879480
@Travis-重新替换方法似乎比替换方法更强大。它本应该作为一个答案被保留下来,因为这是解决问题的最酷的方式。对于这种简单化的东西,也许不是最实用的,但是很酷!我同意这是过分的,但是是的,将函数应用到每个元素而不编写循环的简洁方法
更适合于此解决方案IMHO(而且非常H)。您可以隐式转换为
int[]
数组,然后返回列表ie
arrayToList(javacast(“int[]”,listToArray(list))
。但这需要大量转换。。
_ = 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);