Coldfusion ReReplace查找号码并用新号码替换
对不起,但我对Coldfusion非常新,我需要一些帮助。Coldfusion ReReplace查找号码并用新号码替换
我有一个包含配方方法的字符串。 “热烤箱至200℃,然后等等等等,直到内部温度的措施60C”
- 我需要一个动态计算值的字符串中替换的数值,然后它会是这样的:“热火的烤箱200c(392f),然后等到内部温度测量60c(140f)“。
这些数字值可以出现在字符串中的任意位置和多次。 从C到F转换的计算是C * 9/5 + 32.
所以我需要ReReplace字符串中的所有数字与动态计算的新值。
我希望这很清楚。
这是我做的方法。
<cfscript>
sString = "Heat your oven to 200c and then cook till the temp internally is 60c";
aFind = ReMatchNoCase("\d+c",sString);
x = 0;
while(x < arrayLen(aFind)){
x++;
nCalc = RematchNoCase("\d+",aFind[x])[1];
nCalc = nCalc*9/5+32;
sString = ReReplaceNoCase(sString,aFind[x],'#aFind[x]# (#ncalc#F)');
}
writeOutput(sString);
</cfscript>
亚当斯链接UDF可能会更好,但我想这个代码示例,作为进去一看,你会如何完成它没有第三方。
非常棒的Jarede。完美的作品。谢谢! – 2014-12-08 05:54:24
你需要在那里使用'reReplaceNoCase()'吗?这只是一个直线替换是不是?此外,*在最低限度*这应该被封装在一个函数。我也会考虑把温度转换也放在它自己的功能中,以使它更简洁的代码。它*也*使用'while()'循环遍历数组似乎有点奇怪。你为什么不使用“for-in”循环? – 2014-12-08 08:34:47
@AdamCameron是正确的,因为这应该是它自己的功能,并且温度转换也应该外推到它自己的函数中。 while循环只是因为我没有在工作中使用for-in来存储数组(因为我不能),所以我只是想在工作中如何去做。 – Jarede 2014-12-08 10:45:01
CFLib上的replaceWithCallback()UDF应该可以帮助您执行所需的操作:http://www.cflib.org/udf/replaceWithCallback – 2014-12-07 21:37:42