TokenReplacer.java

package se.jobtechdev.personaldatagateway.api.util;

import java.util.Map;
import java.util.regex.Pattern;

public final class TokenReplacer {
  private TokenReplacer() {
  }

  public static String replace(String text, Map<String, String> tokenReplacement) {
    for (final var entry : tokenReplacement.entrySet()) {
      final var key = entry.getKey();
      final var val = entry.getValue();
      final var regex = "(\\{" + key + "\\})";
      final var pattern = Pattern.compile(regex);
      final var matcher = pattern.matcher(text);
      int lastIndex = 0;
      final var result = new StringBuilder();
      while (matcher.find()) {
        result.append(text, lastIndex, matcher.start()).append(val);
        lastIndex = matcher.end();
      }
      if (lastIndex < text.length()) {
        result.append(text, lastIndex, text.length());
      }
      text = result.toString();
    }
    return text;
  }
}