fork(1) download
  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;
  3. import java.util.*;
  4.  
  5. public class Main
  6. {
  7. static void processString(String line)
  8. {
  9. Pattern p = Pattern.compile("(1|2|3|4)"); // 5 Вариантов паттернов для теста
  10. Matcher m = p.matcher(line); // Естественно в реальной задаче намного больше
  11.  
  12. int i = 0;
  13. HashMap<String, String> map = new HashMap<String,String>();
  14. while (m.find()) {
  15. String group = m.group();
  16. String replacement;
  17. if(map.containsKey(group)) {
  18. replacement = map.get(group);
  19. } else {
  20. i++;
  21. replacement = "AAA"+i;
  22. map.put(group, replacement);
  23. }
  24. System.out.println("Нужно заменить " + group+ " на " + replacement);
  25. m.appendReplacement(sb, replacement);
  26.  
  27. }
  28. m.appendTail(sb);
  29.  
  30. System.out.println("\n\n" + sb);
  31. }
  32.  
  33. public static void main(String[] args)
  34. {
  35. processString(" 1 2 3 4 4 2 1% 1% 1 2 3 ");
  36. }
  37. }
Success #stdin #stdout 0.1s 27824KB
stdin
Standard input is empty
stdout
Нужно заменить 1 на AAA1
Нужно заменить 2 на AAA2
Нужно заменить 3 на AAA3
Нужно заменить 4 на AAA4
Нужно заменить 4 на AAA4
Нужно заменить 2 на AAA2
Нужно заменить 1 на AAA1
Нужно заменить 1 на AAA1
Нужно заменить 1 на AAA1
Нужно заменить 2 на AAA2
Нужно заменить 3 на AAA3


 AAA1  AAA2  AAA3  AAA4  AAA4  AAA2  AAA1%  AAA1%  AAA1  AAA2  AAA3