JAVA

정규식을 이용한 치환

주원만쉐 2022. 12. 27. 10:54
728x90
public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String aaa = "test ${aaa} 입니다.";
		Map<String, String> obj = new HashMap<>();
		obj.put("aaa", "bbb");
		String result = getTemplateSms(aaa, obj);
		
		System.out.println(result);
	}

	/**
	 * Method 설명 : String에 ${aaa} 를 찾아내서 aaa의 위치에 value로 변경한다.
	 * @param <T>
	 * @param obj
	 * @param inputString
	 * @return
	 *
	 * <pre>
	 * Commnets : 
	 * </pre>
	*/
	protected static <T> String getTemplateSms(String inputString, Map<String, String> obj) {
		StringBuilder output = new StringBuilder();
		Pattern pattern = Pattern.compile("\\$\\{(.*?)\\}");
		Matcher matcher = pattern.matcher(inputString);
		int lastStart = 0;
		while (matcher.find()) {
			String subString = inputString.substring(lastStart, matcher.start());
			String varName = matcher.group(1);
			String replacement = obj.get(varName);
			output.append(subString).append(replacement);
			lastStart = matcher.end();
		}
		output.append(inputString.substring(lastStart, inputString.length()));
		return output.toString();

	}
}
728x90