我有格式列表
"4186.0,7573.0,4300.0,9479.0,9488.0,10642.0,7987.0,9480.0 "
冷融合中是否有任何可用的功能,可以".0"
一次性从数字中删除所有内容?
谢谢你。
我有格式列表
"4186.0,7573.0,4300.0,9479.0,9488.0,10642.0,7987.0,9480.0 "
冷融合中是否有任何可用的功能,可以".0"
一次性从数字中删除所有内容?
谢谢你。
没有一个简单的功能可以做到这一点,但是您可以做很多事情。
您可以遍历列表和numberFormat()
每个项目,将其放回列表中或创建新列表。这在处理和编程中都是低效的。
因为您的列表只是一个字符串,您可以用简单的字符串替换替换数字的小数部分:replace("123.0,456.0", ".0", "", "ALL")
。如果您的列表增长了除“.0”之外的其他十进制数字,您可以将该替换函数升级为正则表达式以捕获数字模式。
我通常使用 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")>
结果是:4186,7573,4300,9479,9488,10642,7987,9480
即使后面没有数字,它也会删除小数点。
您可以使用map()
UnderscoreCF库来优雅地解决这个问题(在 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。
听起来 Int()(在大多数其他语言中相当于 floor() 函数)函数可能是您想要的:http: //help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f89.html
您仍然需要遍历列表,但应用 Int() 函数。