Java實(shí)現(xiàn)占位符名稱替換值
占位符現(xiàn)在應(yīng)該說是比較流行的動(dòng)態(tài)賦值,方法有String.format(),通過%s或其他來賦值;或者M(jìn)essageFormat.format(),通過{0}來賦值,參數(shù)名都不可定義
項(xiàng)目中有個(gè)需求,根據(jù)一串帶著參數(shù)名占位符的url,替換掉對應(yīng)參數(shù)名的值,由此有了以下的工具類。
代碼import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;public class StringFormatUtil { private static final Pattern pattern = Pattern.compile('{(.*?)}'); private static Matcher matcher; private StringFormatUtil(){} /** * 格式化字符串 字符串中使用{key}表示占位符 * * @param sourStr * 需要匹配的字符串 * @param param * 參數(shù)集 * @return */ public static String format(String sourStr, Map<String, Object> param) {String tagerStr = sourStr;if (param == null) return tagerStr;try { matcher = pattern.matcher(tagerStr); while (matcher.find()) {String key = matcher.group();String keyclone = key.substring(1, key.length() - 1).trim();Object value = param.get(keyclone);if (value != null) tagerStr = tagerStr.replace(key, value.toString()); }}catch (Exception e){ return null;}return tagerStr; } //public static void main(String[] args) { // String url = 'https://xxx.com/cfes?c={campaign_name}&af_siteid={af_siteid}&clickid={clickid}&android_id={android_id}&advertising_id={advertising_id}&idfa={idfa}'; // Map<String, Object> map = new LinkedHashMap<>(); // map.put('campaign_name', '111'); // map.put('af_siteid', '222'); // map.put('clickid', '333'); // map.put('android_id', '444'); // map.put('advertising_id', '555'); // map.put('idfa', ''); // System.out.println(format(url, map)); //}}
結(jié)果https://xxx.com/cfes?c=111&af_siteid=222&clickid=333&android_id=444&advertising_id=555&idfa=
原理從上面結(jié)果可以看到,對應(yīng)著參數(shù)名的占位符都被替換成了相應(yīng)的值,原理也很簡單,根據(jù)表達(dá)式匹配,找出str中的每個(gè)占位符,再根據(jù)傳入的map,找到占位符名稱做key,就能拿到對應(yīng)的value,然后進(jìn)行替換
到此這篇關(guān)于Java實(shí)現(xiàn)占位符名稱替換值的文章就介紹到這了,更多相關(guān)Java 占位符替換內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP基礎(chǔ)知識(shí)VBScript基本元素講解2. Python requests庫參數(shù)提交的注意事項(xiàng)總結(jié)3. IntelliJ IDEA導(dǎo)入jar包的方法4. ajax請求添加自定義header參數(shù)代碼5. Kotlin + Flow 實(shí)現(xiàn)Android 應(yīng)用初始化任務(wù)啟動(dòng)庫6. ASP中解決“對象關(guān)閉時(shí),不允許操作。”的詭異問題……7. 利用CSS3新特性創(chuàng)建透明邊框三角8. python爬蟲學(xué)習(xí)筆記之pyquery模塊基本用法詳解9. asp知識(shí)整理筆記4(問答模式)10. 詳談ajax返回?cái)?shù)據(jù)成功 卻進(jìn)入error的方法
