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

