午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

Java字符串格式化,{}占位符根據(jù)名字替換實(shí)例

瀏覽:118日期:2022-08-22 09:18:40

我就廢話不多說了,大家還是直接看代碼吧~

import java.beans.PropertyDescriptor;import java.lang.reflect.Method;import java.util.HashMap;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; /** * 格式化字符串 字符串中使用{key}表示占位符 * * @param sourStr * 需要匹配的字符串 * @param param * 參數(shù)集 * @return */ public static String stringFormat(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; } /** * 格式化字符串 字符串中使用{key}表示占位符 利用反射 自動獲取對象屬性值 (必須有g(shù)et方法) * * @param sourStr 需要匹配的字符串 * * @return */ public static String stringFormat(String sourStr, Object obj) { String tagerStr = sourStr; matcher = pattern.matcher(tagerStr); if (obj == null) return tagerStr; PropertyDescriptor pd; Method getMethod; // 匹配{}中間的內(nèi)容 包括括號 while (matcher.find()) { String key = matcher.group(); String keyclone = key.substring(1, key.length() - 1).trim(); try {pd = new PropertyDescriptor(keyclone, obj.getClass());getMethod = pd.getReadMethod();// 獲得get方法Object value = getMethod.invoke(obj);if (value != null) tagerStr = tagerStr.replace(key, value.toString()); } catch (Exception e) {// TODO Auto-generated catch block// Loggers.addException(e); } } return tagerStr; } /** * 格式化字符串 (替換所有) 字符串中使用{key}表示占位符 * * @param sourStr * 需要匹配的字符串 * @param param * 參數(shù)集 * @return */ public static String stringFormatAll(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; } /** * 格式花字符串,按照占位符名字 * 輸入:sourStr = xxxxx{a}xxxx{b} ,param = {a:A,b:B} * 輸出:targetStr = xxxxAxxxxB * @param sourStr * @param param * @return */ public static String stringFormat(String sourStr, JSONObject 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) {// Map<String,Object> map = new HashMap<>();// map.put('id','111');// map.put('sss','ss');// JSONObject json = new JSONObject();// json.put('id','212');// json.put('fff','xxxx');// json.put('emmmmm',11);// stringFormat('sisas&{fff}_diwahwi%{id}{jio}',json); }}

補(bǔ)充知識:java中占位符的使用

二話不說,先上代碼

package com.string.format;public class StringFormat { //占位符%s,拼接sql,刪除兩個(gè)表中的數(shù)據(jù),條件是字符串?dāng)?shù)組類型的id public static void formSql(String tableName,String tableName2,String...strings){ //sql占位符 %s占位符 String sql='delete from %s,%s where id in (%s)'; //聲明新的字符串 String sqls=''; //遍歷字符串的參數(shù)數(shù)組 for (String str : strings) { //將參數(shù)數(shù)組拼接成字符串,用逗號分割 sqls += str + ','; } //拼接最后會多出個(gè)逗號,截取 sqls=sqls.substring(0, sqls.length()-1); //format第一個(gè)sql參數(shù)為目標(biāo)字符串,tableName,tableName2,為替換的兩表的名字,sqls為刪除數(shù)據(jù)的參數(shù)集合 String s=String.format(sql, tableName,tableName2,sqls); //輸出拼接后的sql System.out.println(s); } public static void main(String[] args) { //傳入?yún)?shù)為指定表名,和參數(shù)值 StringFormat.formSql('user','role', '1','3','5','7','9','33'); }}

其實(shí),傳入的參數(shù)是數(shù)組類型的 值,我們也可以按array[0],array[1]的方式插入?yún)?shù),只是參數(shù)個(gè)數(shù)應(yīng)用不靈活,還是使用數(shù)組的方式取值比較好,

Java字符串格式化,{}占位符根據(jù)名字替換實(shí)例

public static void format(){ String st='%s的%s的價(jià)格是%f,是否售罄%c,占總銷售的%d%%,庫存%d,是否為暢銷品%b'; String s=String.format(st, '58優(yōu)品','啤酒',3.5,’是’,50,199,true); System.out.println(s); } public static void main(String[] args) { //傳入?yún)?shù)為指定表名,和參數(shù)值 //StringFormat.formSql('user','role', '1','3','5','7','9','33'); format(); }

Java字符串格式化,{}占位符根據(jù)名字替換實(shí)例

public static void format(){ //String st='%s的%s的價(jià)格是%f,是否售罄%c,占總銷售的%d%%,庫存%d,是否為暢銷品%b'; //String s=String.format(st, '58優(yōu)品','啤酒',3.5,’是’,50,199,true); //System.out.println(s); SimpleDateFormat simple=new SimpleDateFormat('yyyy年MM月dd日 HH點(diǎn)mm分ss秒'); String newDate=simple.format(new Date()); String st1='%s的%s的價(jià)格是%s,是否售罄%s,占總銷售的%s%%,庫存%s,是否為暢銷品%s,當(dāng)前日期為%s'; String ss=String.format(st1, '58優(yōu)品','啤酒','3.5',’是’,'80','998','true',newDate);System.out.println(ss); } public static void main(String[] args) { //傳入?yún)?shù)為指定表名,和參數(shù)值 //StringFormat.formSql('user','role', '1','3','5','7','9','33'); format(); }

Java字符串格式化,{}占位符根據(jù)名字替換實(shí)例

/*%S字符串類型的占位符 * %c字符類型的占位符 * %b布爾類型的占位符 * %d整數(shù)類型的占位符 * %%百分比類型的占位符 * %n換行類型的占位符 * %t時(shí)間類型的占位符 * c全部的日期時(shí)間類型 * F年-月-日格式 * D年/月/日格式 * rHH:MM:SS格式12小時(shí)制 * */

以上這篇Java字符串格式化,{}占位符根據(jù)名字替換實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: a久久久久久 | 91黄色免费网站 | 色日韩 | 日韩欧美www | 免费能看的黄色网址 | 日韩一区精品 | 色视频在线播放 | 美腿丝袜av | 久久不卡一区 | 草久久免费视频 | 亚洲系列在线观看 | 欧美成人激情 | 美女在线播放 | 九九热免费在线视频 | 久久99精品久久久久 | 神马久久久久久久久久 | 精品国产一区二区在线观看 | 国产资源在线看 | 人人插人人搞 | 精品动漫一区二区 | 亚洲视频网站在线观看 | 在线播放亚洲 | 国产老头户外野战xxxxx | 成人区视频 | 伊人色影院 | 欧美激情国产精品 | 尹人在线观看 | 欧美日韩在线视频免费 | 亚洲欧美日韩精品 | 免费黄色在线 | 国产一二区视频 | 中文字幕の友人北条麻妃 | 欧美v片| 丰满少妇一级 | 日本道中文字幕 | 久久成年人视频 | 香蕉视频成人在线观看 | 日韩和欧美的一区二区 | 狠狠操狠狠插 | av在线导航| 久久久久久av|