How to create dynamic Template String

前端 未结 4 1654
北荒
北荒 2020-12-22 14:06

Is there is any API which replace template string along with values using Spring or java.

For example:

Dear %FIRST_NAME% %LAST_NAME%,
---- remaining          


        
4条回答
  •  萌比男神i
    2020-12-22 14:44

    Usage:

    replaceAll(string,
            "param1", "value 1",
            "param12", "value 12");
    

    Implementation:

    public static String replaceAll(String text, Object... replacements) {
        Assert.isTrue(replacements.length % 2 == 0, "Is not key - value pairs: " + replacements);
    
        Map< String, String> longToShortNamesMap = new TreeMap<>(new Comparator() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length() == o2.length() ? o1.compareTo(o2) : o2.length() - o1.length();
            }
        });
        for (int i = 0; i < replacements.length; i += 2) {
            longToShortNamesMap.put(Objects.toString(replacements[i]), Objects.toString(replacements[i+1]));
        }
        String result = text;
        for (String key : longToShortNamesMap.keySet()) {
            Assert.isTrue(text.contains(key), "Can not find key in the text " + key);
            result = result.replaceAll(key, longToShortNamesMap.get(key));
        }
        return result;
    }
    

提交回复
热议问题