Java用正則表達(dá)式實(shí)現(xiàn)${name}形式的字符串模板實(shí)例
前言
相信大家可能曾遇到過這種情況,在開發(fā)中類似站內(nèi)信的需求時(shí),我們經(jīng)常要使用字符串模板,比如
尊敬的用戶${name}。。。。
里面的${name}
就可以替換為用戶的用戶名。
下面使用正則表達(dá)式簡(jiǎn)單實(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 = "\\$\\{" + entry.getKey() + "\\}"; 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}形式的字符串模板的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
log4j中l(wèi)ogger標(biāo)簽中additivity屬性的用法說明
這篇文章主要介紹了log4j中l(wèi)ogger標(biāo)簽中additivity屬性的用法說明,基于很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12springboot讀取resource配置文件生成容器對(duì)象的示例代碼
這篇文章主要介紹了springboot讀取resource配置文件生成容器對(duì)象的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07bootstrap.yml如何讀取nacos配置中心的配置文件
這篇文章主要介紹了bootstrap.yml讀取nacos配置中心的配置文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Java后端請(qǐng)求接收多個(gè)對(duì)象入?yún)⒌臄?shù)據(jù)方法(推薦)
本文介紹了如何使用SpringBoot框架接收多個(gè)對(duì)象作為HTTP請(qǐng)求的入?yún)?通過創(chuàng)建數(shù)據(jù)模型、DTO類和Controller,我們可以輕松處理復(fù)雜的請(qǐng)求數(shù)據(jù)2024-11-11