fork download
  1. import java.util.Map;
  2. import java.util.HashMap;
  3. import java.util.Set;
  4. import java.util.TreeSet;
  5.  
  6. class Main {
  7. public static void main(String[] args) {
  8. String templateTexto = "{tag} {player} {abacaxi} {banana} > {msg}";
  9. Map<String, String> substituicoes = new HashMap<>();
  10. substituicoes.put("tag", "MODERADOR");
  11. substituicoes.put("player", "João");
  12. substituicoes.put("msg", "uma mensagem.");
  13.  
  14. Template template = new Template(templateTexto);
  15. String substituido = template.substituir(substituicoes);
  16. System.out.println(substituido);
  17. }
  18. }
  19.  
  20. class Template {
  21.  
  22. private final String template;
  23. private final Set<String> tags;
  24.  
  25. public Template(String template) {
  26. this.template = template;
  27. this.tags = new TreeSet<>();
  28. StringBuilder nomeVariavel = null;
  29. boolean variavel = false;
  30. for (char c : template.toCharArray()) {
  31. if (!variavel && c == '{') {
  32. variavel = true;
  33. nomeVariavel = new StringBuilder();
  34. } else if (variavel && c == '}') {
  35. variavel = false;
  36. tags.add(nomeVariavel.toString());
  37. nomeVariavel = null;
  38. } else if (variavel) {
  39. nomeVariavel.append(c);
  40. }
  41. }
  42. }
  43.  
  44. public String substituir(Map<String, String> substituicoes) {
  45. String texto = template;
  46. for (Map.Entry<String, String> entry : substituicoes.entrySet()) {
  47. texto = texto.replace("{" + entry.getKey() + "}", entry.getValue());
  48. }
  49. for (String tag : tags) {
  50. if (substituicoes.containsKey(tag)) continue;
  51. texto = texto.replace("{" + tag + "} ", "");
  52. texto = texto.replace("{" + tag + "}", "");
  53. }
  54. return texto;
  55. }
  56. }
Success #stdin #stdout 0.05s 711168KB
stdin
Standard input is empty
stdout
MODERADOR João > uma mensagem.