Java如何实现格式化字符串

  介绍

这篇文章将为大家详细讲解有关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如何实现格式化字符串