我已经被投入ColdFusion进行非常简单的任务.应用程序有一些逻辑来显示"帮助代码"(让我们不要进入什么是帮助代码),但是,逻辑是错误的,需要修复.给定一个两个字母的代码,一个1-4位的数字,以及另一个1-2位的数字,我需要像这样的printf调用那样显示它们:
printf("%s%04d%02d", letterCode, bigNumber, smallNumber);
Run Code Online (Sandbox Code Playgroud)
如果您不熟悉printf函数,它会接受格式字符串(第一个参数),并根据给定的格式将其他变量写入其中.%s意思是"写一个字符串",%d意思是"写一个数字"; %0zd表示"写一个数字并用零填充它所以它至少是z个字符长(所以%04d意味着"写一个数字并用零填充它所以它至少长4个数字).
以下是一些示例%s%04d%02d:
"AD", 45, 12: AD004512
"GI", 5121, 1: GI512101
"FO", 1, 0: FO000100
Run Code Online (Sandbox Code Playgroud)
但是,这是我第一次使用ColdFusion,我找不到任何类似printf或sprintf格式化字符串的东西.
另一个不再在这里工作的人使用(非工作)循环,我认为使用库代码而不是实际修复循环会更好,因为无论如何我可能需要再做类似的事情.
<cfset bigNumberPadded = NumberFormat(bigNumber,"0000")>
<cfset smallNumberPadded = NumberFormat(smallNumber,"00")>
<cfoutput>#letterCode##bigNumberPadded##smallNumberPadded#<cfoutput>
Run Code Online (Sandbox Code Playgroud)
或者......按照bpanulla的建议,并由Leigh纠正
<cfset args = ["AD", javacast("int", 45), javacast("int", 12)]>
<cfset output= createObject("java","java.lang.String").format("%s%04d%02d", args) >
Run Code Online (Sandbox Code Playgroud)