fork download
  1. import java.util.*;
  2. import java.util.regex.*;
  3. import java.lang.*;
  4. import java.io.*;
  5.  
  6. class Ideone
  7. {
  8. public static void main (String[] args) throws java.lang.Exception
  9. {
  10. String s = "Код %здесь%, кот %там%";
  11. HashMap<String, String> h = new HashMap<String, String>();
  12. h.put("здесь" , "на земле");
  13. h.put("там" , "в раю");
  14. System.out.println(convertTree(s, h));
  15. }
  16.  
  17. private static String convertTree(String s, HashMap<String, String> conv) {
  18. Pattern pattern = Pattern.compile("%(\\p{L}+)%"); // Задаем шаблон
  19. Matcher m = pattern.matcher(s); // Инициализация Matcher
  20. StringBuffer result = new StringBuffer(); // Буфер для конечного значения
  21. while (m.find()) { // Проверка на совпадение
  22. if (conv.containsKey(m.group(1))) { // Проверка на наличие ключа
  23. m.appendReplacement(result, conv.get(m.group(1))); // Подставляем значение из HashMap
  24. }
  25. else {
  26. m.appendReplacement(result, m.group(0)); // Или найденное совпадение, если ключ не найден
  27. }
  28. }
  29. m.appendTail(result); // Добавить остаток строки
  30. return result.toString();
  31. }
  32. }
Success #stdin #stdout 0.05s 4386816KB
stdin
Standard input is empty
stdout
Код на земле, кот в раю