Je voudrais remplacer %s
Par la valeur
<server>
<id>artifactory</id>
<username>%s</username>
<password>%s</password>
</server>
Existe-t-il une méthode myString.format("name", "pass")
dans groovy?
En rassemblant les réponses et les commentaires ci-dessus au même endroit, il existe deux approches:
String.format
fonctionnalité voir ci-dessus , qui est en groovy enveloppé dans la fonction de confort sprintf
voir par exemple ici ou iciÀ mon avis personnel, la première option convient mieux à la question posée à l'origine, car elle permet de créer des chaînes de "modèle", qui peuvent ensuite être utilisées avec des paramètres arbitraires à un endroit arbitraire dans le code un nombre arbitraire de fois. Cela semble être le cas d'utilisation de la question d'origine.
En règle générale, il existe deux différences majeures entre l'interpolation de chaînes et sprintf:
{-> expr}
), il n'a toujours pas d'acte explicite d'application de modèle, mais s'appuie plutôt sur des variables définies en externe avec des noms particuliers, ce qui est à mon avis moins fiable.Pour illustrer le cas d'utilisation des modèles, considérez:
// can be defined in the same function, or as static variable in the class or even
// in other class
final String URL_TEMPLATE = 'http://fake.weather.com/rest/%s' // arg - country abbreviation
// ...
// Here we want to get weather for different countries.
def countries = ['US', 'DE', 'GB']
for (country in countries) {
def url = URL_TEMPLATE.format(country)
// send the request, accumulate the results
}
Cette solution n'est pas facile à utiliser en utilisant l'interpolation de chaînes. Bien sûr, j'admets, qu'il est toujours possible de construire la solution également basée sur l'interpolation de chaînes, mais cela aurait l'air très différent.