前言
相信大家可能曾遇到過這種情況,在開發(fā)中類似站內(nèi)信的需求時(shí),我們經(jīng)常要使用字符串模板,比如
尊敬的用戶${name}。。。。里面的${name}就可以替換為用戶的用戶名。
下面使用正則表達(dá)式簡單實(shí)現(xiàn)一下這個(gè)功能:
/**  * 根據(jù)鍵值對(duì)填充字符串,如("hello ${name}",{name:"xiaoming"})  * 輸出:  * @param content  * @param map  * @return  */ public static String renderString(String content, Map<String, String> map){  Set<Entry<String, String>> sets = map.entrySet();  for(Entry<String, String> entry : sets) {   String regex = "http://$//{" + entry.getKey() + "http://}";   Pattern pattern = Pattern.compile(regex);   Matcher matcher = pattern.matcher(content);   content = matcher.replaceAll(entry.getValue());  }  return content; }在map里存儲(chǔ)了鍵值對(duì),然后獲取鍵值對(duì)的集合,遍歷集合進(jìn)行對(duì)字符串的渲染
實(shí)例測(cè)試:
@Test public void renderString() {  String content = "hello ${name}, 1 2 3 4 5 ${six} 7, again ${name}. ";  Map<String, String> map = new HashMap<>();  map.put("name", "java");  map.put("six", "6");  content = StringHelper.renderString(content, map);  System.out.println(content); }有兩個(gè)變量需要替換,name和six,對(duì)應(yīng)的值分別為Java和6,同時(shí)name調(diào)用了兩次。
結(jié)果:
hello java, 1 2 3 4 5 6 7, again java.
總結(jié)
以上就是關(guān)于Java利用正則表達(dá)式實(shí)現(xiàn)${name}形式的字符串模板的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
新聞熱點(diǎn)
疑難解答
圖片精選