Отличный эквивалент Java String.format - PullRequest
0 голосов
/ 27 апреля 2018

Приведенный ниже код 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?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вы можете использовать GroovyStrings вместо String.format или конкатенации строк; GroovyStrings позволяет вставлять переменные в тело строки, как описано в документации :

Любое выражение Groovy может быть интерполировано во все строковые литералы, кроме одинарных и тройных одинарных строк в кавычках. Интерполяция - это процесс замены заполнителя в строке его значением при вычислении строки. Выражения-заполнители окружены $ {} или префиксом $ для точечных выражений. Значение выражения внутри заполнителя оценивается в его строковое представление, когда GString передается методу, принимающему String в качестве аргумента, вызывая toString () для этого выражения.

Есть несколько способов разграничить строковые литералы, вы можете избежать необходимости избегать двойных кавычек, выбрав другой синтаксис разграничения, такой как dollar-slashy , slashy или тройной двойные кавычки .

Кстати, в Groovy вам не нужны точки с запятой, и вы должны использовать return явно, только если вы возвращаетесь рано из метода:

String getSignature() {
    String timestamp = getUTCTimestamp()
    String nonce = getNonce()
    String digest = getPasswordDigest(nonce, timestamp)

    $/UsernameToken Username="${apiUsername}", PasswordDigest="${digest}", Nonce="${nonce}", Created="${timestamp}"/$
}
0 голосов
/ 27 апреля 2018

Должно быть в состоянии сделать

private String getSignature() {
    String timestamp = getUTCTimestamp();
    String nonce = getNonce();
    String digest = getPasswordDigest(nonce, timestamp);

    "UsernameToken Username=\"$apiUsername\", PasswordDigest=\"$digest\", Nonce=\"$nonce\", Created=\"$timestamp\""
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...