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
相关产品推荐
相关产品推荐

