groovy - Groovy 等效于 Java 的 String.format
问题描述
下面的 Java 代码给出了 Groovy 中的错误。
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);
}
特别是String.format这一行,如何在Groovy中重写?
解决方案
您可以优先使用 GroovyStrings,而不是 String.format 或字符串连接;GroovyStrings 允许您将变量插入到字符串的主体中,如文档中所述:
任何 Groovy 表达式都可以插入到所有字符串文字中,除了单引号和三重单引号字符串。插值是在评估字符串时用其值替换字符串中的占位符的行为。占位符表达式由 ${} 包围,或以 $ 为前缀以表示点分表达式。当 GString 通过在该表达式上调用 toString() 传递给以字符串为参数的方法时,占位符内的表达式值被评估为其字符串表示形式。
有多种分隔字符串文字的方法,您可以通过选择不同的分隔语法来避免转义双引号,例如Dollar-slashy、slashy或Triple-double-quoted。
顺便说一句,在 Groovy 中,您不需要分号,并且仅当您从方法中提前返回时才需要显式使用 return:
String getSignature() {
String timestamp = getUTCTimestamp()
String nonce = getNonce()
String digest = getPasswordDigest(nonce, timestamp)
$/UsernameToken Username="${apiUsername}", PasswordDigest="${digest}", Nonce="${nonce}", Created="${timestamp}"/$
}
推荐阅读
- html - CSS:对象覆盖不使图像居中
- javascript - 将 Google 工作表中的值插入函数
- c - macOS llvm 编译:ld:找不到 -lomp 的库
- java - Servlet:init() 方法与内联字段初始化
- java - 使用专用方法调整数组大小以扩大和缩小规模
- python - 尝试在 python 中进行 Kruskall Wallis 事后测试,但统计数据不同?
- javascript - 仅当对象的所有值都不为空时才返回对象
- c# - 为什么 C# 中 RSA 加密的结果与 JavaScript 不同?
- amp-html - 如何阻止 AMP 删除未使用的 CSS 类?
- javascript - 按钮按下时图像更改损坏