You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java的String.format的Groovy等效写法及报错代码改写咨询

嗨,这个问题我熟!其实Groovy对Java的语法兼容性很强,但它自己有更优雅的字符串处理方式,刚好能解决你的问题~

最推荐的改写方式:Groovy字符串插值

Groovy里双引号包裹的字符串支持直接嵌入变量,用${变量名}的形式,比String.format直观太多,还不会搞混占位符顺序。改写后的代码是这样的:

private String getSignature() { 
    def timestamp = getUTCTimestamp() 
    def nonce = getNonce() 
    def digest = getPasswordDigest(nonce, timestamp) 
    return "UsernameToken Username=\"${apiUsername}\", PasswordDigest=\"${digest}\", Nonce=\"${nonce}\", Created=\"${timestamp}\""
}

(顺便提一句:Groovy里可以不用写分号,也可以用def代替具体类型,让代码更简洁~)

如果你想保留类似Java的写法

其实Groovy完全支持String.format,只要你的变量在当前作用域内是可访问的,原代码理论上是可以运行的。如果之前报错,可能是变量apiUsername没有正确引入或者作用域的问题,修正后写法和Java几乎一致:

private String getSignature() { 
    String timestamp = getUTCTimestamp(); 
    String nonce = getNonce(); 
    String digest = getPasswordDigest(nonce, timestamp); 
    return String.format( "UsernameToken Username=\"%s\", PasswordDigest=\"%s\", Nonce=\"%s\", Created=\"%s\"", apiUsername, digest, nonce, timestamp); 
}

不过这种写法不如插值简洁,所以更推荐第一种方式哦。

内容的提问来源于stack exchange,提问作者AbuMariam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:10:42