2010-03-03 5 views
3

Est-ce que quelqu'un connaît une bibliothèque Java qui supporte la substitution de style $ {var} dans les fichiers texte?

+0

String.replace (...)? –

+0

Il est fondamentalement le même que http://stackoverflow.com/questions/2368802/how-to-create-dynamic-template-string/2368810#2368810 – cletus

+0

Possible copie de [Comment créer dynamique String Template] (http: // stackoverflow.com/questions/2368802/how-to-create-dynamic-template-string) – Chirag

Répondre

2

Ne pas laisser passer StringTemplate il est probablement la plus propre séparation des données et des préoccupations de modèle et est très robuste.

3

La classe MessageFormat de Java permet la substitution de texte semi-avancée, avec la prise en charge de la localisation et de la mise en forme des nombres, des dates et de l'heure. Et pour la pluralisation, vous pouvez même utiliser java.text.ChoiceFormat avec MessageFormat. Cela peut suffire à tous vos besoins de substitution de texte.

Sinon, vous pouvez jeter un oeil à Apache Velocity (http://velocity.apache.org/) ou Freemarker (http://freemarker.sourceforge.net/)

+0

Bon à savoir que Sun a son propre outil intégré pour cela. Cela fonctionne bien si vous ne voulez pas inclure d'autres bibliothèques. Il est également disponible en Java 1.4 et 5. –

2

Utilisez org.apache.commons.lang3.text.StrSubstitutor

Exemple 1 (l'exemple le plus simple est d'utiliser cette classe pour remplacer les propriétés Java System) :

StrSubstitutor.replaceSystemProperties(
    "You are running with java.version = ${java.version} and os.name = ${os.name}."); 

Exemple 2:

Map valuesMap = HashMap(); 
    valuesMap.put("animal", "quick brown fox"); 
    valuesMap.put("target", "lazy dog"); 
    String templateString = "The ${animal} jumped over the ${target}."; 
    StrSubstitutor sub = new StrSubstitutor(valuesMap); 
    String resolvedString = sub.replace(templateString); 

rendement:

The quick brown fox jumped over the lazy dog.