介绍
这篇文章将为大家详细讲解有关Java如何实现格式化字符串,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
进口java.beans.PropertyDescriptor; 进口java.lang.reflect.Method; 进口java.util.HashMap; 进口java.util.Map; 进口java.util.regex.Matcher; 进口java.util.regex.Pattern; 公开课StringFormatUtil { 私有静态最终模式模式=Pattern.compile(“\ \{(。*和# 63;)\ \}“); 私有静态匹配器匹配器;/* * *格式化字符串字符串中使用{关键}表示占位符 * * @param sourStr *需要匹配的字符串 * @param参数 *参数集 * @return */公共静态字符串stringFormat (String sourStr Map<字符串,Object>param) { 字符串tagerStr=sourStr; 如果(param==null) 返回tagerStr; 尝试{ 匹配器=pattern.matcher (tagerStr); 而(matcher.find ()) { 字符串键=matcher.group (); 字符串keyclone=键。substring (key.length () - 1) .trim (); 对象价值=https://www.yisu.com/zixun/param.get (keyclone); 如果(价值!=null) tagerStr=tagerStr。替换(关键,value.toString ()); } }捕捉(异常e) { 返回null; } 返回tagerStr; }/* * *格式化字符串字符串中使用{关键}表示占位符利用反射自动获取对象属性值(必须有得到方法) * * @param sourStr需要匹配的字符串 * * @return */sourStr stringFormat公共静态字符串(字符串、对象obj) { 字符串tagerStr=sourStr; 匹配器=pattern.matcher (tagerStr); 如果(obj==null) 返回tagerStr; PropertyDescriptor pd; 方法getMethod;//匹配{}中间的内容包括括号 而(matcher.find ()) { 字符串键=matcher.group (); 字符串keyclone=键。substring (key.length () - 1) .trim (); 尝试{ pd=new PropertyDescriptor (keyclone obj.getClass ()); getMethod=pd.getReadMethod();//获得得到方法 对象价值=getMethod.invoke (obj); 如果(价值!=null) tagerStr=tagerStr。替换(关键,value.toString ()); }捕捉(异常e) {//TODO自动生成的catch块//Loggers.addException (e); } } 返回tagerStr; }/* * *格式化字符串(替换所有)字符串中使用{关键}表示占位符 * * @param sourStr *需要匹配的字符串 * @param参数 *参数集 * @return */stringFormatAll公共静态字符串(字符串sourStr,地图<字符串、对象>参数){ 字符串tagerStr=sourStr; 如果(param==null) 返回tagerStr; 尝试{ 匹配器=pattern.matcher (tagerStr); 而(matcher.find ()) { 字符串键=matcher.group (); 字符串keyclone=键。substring (key.length () - 1) .trim (); 对象价值=param.get (keyclone); 如果(价值!=null) tagerStr=tagerStr。替换(关键,value.toString ()); } }捕捉(异常e) { 返回null; } 返回tagerStr; }/* * *格式花字符串,按照占位符名字 *输入:sourStr=xxxxx{一}xxxx {b}, param={a, b: b} *输出:targetStr=xxxxAxxxxB * @param sourStr * @param参数 * @return */stringFormat公共静态字符串(字符串sourStr JSONObject param) { 字符串tagerStr=sourStr; 如果(param==null) 返回tagerStr; 尝试{ 匹配器=pattern.matcher (tagerStr); 而(matcher.find ()) { 字符串键=matcher.group (); 字符串keyclone=键。substring (key.length () - 1) .trim (); 对象价值=param.get (keyclone); 如果(价值!=null) tagerStr=tagerStr。替换(关键,value.toString ()); } }捕捉(异常e) { 返回null; } 返回tagerStr; } 公共静态void main (String [] args) {//地图<字符串、对象>=new HashMap <> ();//map.put (" id ", " 111 ");//map.put (“sss”、“党卫军”);//JSONObject json=new JSONObject ();//json.put (" id ", " 212 ");//json.put (“fff”、“xxxx”);//json.put (“emmmmm”, 11);//stringFormat (“sisas& {fff} _diwahwi % {id} {jio}”, json); } }
<强> java中占位符的使用强>
二话不说,先上代码
包com.string.format; 公开课StringFormat {//占位符% s,拼接sql,删除两个表中的数据,条件是字符串数组类型的id 公共静态孔隙formSql (tableName2字符串,字符串,字符串…字符串){//sql占位符% s占位符 字符串sql=吧境? s % s的id (% s)“;;//声明新的字符串 字符串中的=?“;//遍历字符串的参数数组 (String str:字符串){//将参数数组拼接成字符串,用逗号分割 中的+=str +“,“; }//拼接最后会多出个逗号、截取 sqls=中的。substring (0, sqls.length () 1);//格式第一个sql参数为目标字符串,表名,tableName2,为替换的两表的名字,sqls为删除数据的参数集合 字符串s=字符串。格式(sql、表名、tableName2 sqls);//输出拼接后的sql System.out.println(年代); } 公共静态void main (String [] args) {//传入参数为指定表名,和参数的值 StringFormat.formSql (“user",“role",“1”,“3”,“5”,“7”,“9”,“33”); } }Java如何实现格式化字符串