使用ColdFusion重现这种类似printf格式的最直接方法是什么?

zne*_*eak 3 format coldfusion

我已经被投入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,我找不到任何类似printfsprintf格式化字符串的东西.

另一个不再在这里工作的人使用(非工作)循环,我认为使用库代码而不是实际修复循环会更好,因为无论如何我可能需要再做类似的事情.

Hen*_*nry 8

<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)