Формат строки в Groovy - PullRequest
       24

Формат строки в Groovy

0 голосов
/ 18 октября 2018

Я хотел бы заменить %s значением

<server>
    <id>artifactory</id>
    <username>%s</username>
    <password>%s</password>
</server>

Есть ли какой-либо метод myString.format("name", "pass") в groovy?

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Groovy имеет встроенную поддержку для интерполяции строк.Все, что вам нужно, это использовать GString:

def name = "name"
def pass = "pass"

String formatted = """
<server>
    <id>artifactory</id>
    <username>$name</username>
    <password>$pass</password>
</server>
"""

Если ваши значения представляют собой массив или коллекцию, вы даже можете использовать params[n] вместо именованных переменных ($name), например так:

def params = ['name', 'pass']

String formatted = """
<server>
    <id>artifactory</id>
    <username>${params[0]}</username>
    <password>${params[1]}</password>
</server>
"""

Если ваша строка должна быть выведена за пределы, вы можете использовать движки шаблонов

Помимо этого, вы можете использовать обычную Java String.format:

def formatted = String.format(myString, "name", "pass")
0 голосов
/ 18 октября 2018

Вы можете использовать sprintf из DefaultGroovyMethods

def name = "name"
def pass = "pass"

String formatted = """
<server>
    <id>artifactory</id>
    <username>$name</username>
    <password>$pass</password>
</server>
"""
def f = sprintf( formatted, name, pass )
0 голосов
/ 18 октября 2018

Groovy на основе Java и в Java есть метод format в String классе

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format(java.lang.String,%20java.lang.Object...)

, поэтому это должно работать

def s='''<server>
    <id>artifactory</id>
    <username>%s</username>
    <password>%s</password>
</server>'''
println String.format(s, "name", "pass")
...