100 votes

Y a-t-il une fonction de substitution de chaîne générale similaire à sl4fj ?

Avec sl4fj, si je veux construire un message de chaîne, il existe une approche agréable qui utilise les substitutions. Par exemple, cela pourrait ressembler à :

logger.info("Action {} occurred on object {}.", objectA.getAction(), objectB);

S'il y a plus de quelques substitutions requises, cela ressemble à :

logger.info("Action {} occurred on object {} with outcome {}.", 
    new Object[]{objectA.getAction(), objectB, outcome});

Ma question est : existe-t-il un moyen générique pour moi de créer une chaîne (et pas seulement un message de journal slf4j) ? Quelque chose comme :

String str = someMethod("Action {} occurred on object {}.", objectA.getAction(), objectB);

ou

String str = someMethod("Action {} occurred on object {} with outcome {}.", 
    new Object[]{objectA.getAction(), objectB, outcome});

Si c'est dans la bibliothèque standard Java, quel serait ce "someMethod" ?

0voto

Ellirabeth J Points 1
public static void main(String[] args) {
    Map x = new HashMap<>();
    x.put("1", "1");
    x.put(null, "2");
    x.put("3", "3");

    x.entrySet().stream().peek(hashSet_Map::getPrint).toList();
}

private static void getPrint(Map.Entry p) {
    System.out.print(stringFormat(" clé={}, valeur={}", p.getKey(), p.getValue()));
}

private static String stringFormat(String str, Object... obj) {
    str.concat("§");
    List collect = Arrays.stream(str
                    .split("\\{}"))
            .toList();
    StringBuilder strBuilder = new StringBuilder();
    try {
            for (int i = 0; i < collect.size(); i++) {
                if (!collect.contains("§")) {
                        strBuilder.append(collect.get(i));
                    if (i < obj.length) {
                        strBuilder.append(obj[i]);
                    }
                }
            }
    } catch (Exception e) {
        return "Erreur de format";
    };
    return strBuilder.toString();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X