欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年10月23日 15:11:38   作者:leaves_story  
這篇文章主要介紹了Java字符串格式化,{}占位符根據(jù)名字替換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

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

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}表示占位符 利用反射 自動(dòng)獲取對(duì)象屬性值 (必須有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)容 包括括號(hào)
    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 ,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ǔ)充知識(shí):java中占位符的使用

二話不說(shuō),先上代碼

package com.string.format;

public class StringFormat {
  //占位符%s,拼接sql,刪除兩個(gè)表中的數(shù)據(jù),條件是字符串?dāng)?shù)組類(lèi)型的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ù)組拼接成字符串,用逗號(hào)分割
      sqls += str + ",";
    }
    //拼接最后會(huì)多出個(gè)逗號(hào),截取
    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ù)組類(lèi)型的 值,我們也可以按array[0],array[1]的方式插入?yún)?shù),只是參數(shù)個(gè)數(shù)應(yīng)用不靈活,還是使用數(shù)組的方式取值比較好,

public static void format(){
    String st="%s的%s的價(jià)格是%f,是否售罄%c,占總銷(xiāo)售的%d%%,庫(kù)存%d,是否為暢銷(xiāo)品%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();
  }

public static void format(){
    //String st="%s的%s的價(jià)格是%f,是否售罄%c,占總銷(xiāo)售的%d%%,庫(kù)存%d,是否為暢銷(xiāo)品%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,占總銷(xiāo)售的%s%%,庫(kù)存%s,是否為暢銷(xiāo)品%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();
  }

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

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

相關(guān)文章

  • springBoot server.port=-1的含義說(shuō)明

    springBoot server.port=-1的含義說(shuō)明

    這篇文章主要介紹了springBoot server.port=-1的含義說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java繪制哆啦A夢(mèng) 超可愛(ài)

    java繪制哆啦A夢(mèng) 超可愛(ài)

    這篇文章主要介紹了java繪制哆啦A夢(mèng),特別的可愛(ài),文中示例代碼介紹的也非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java java.sql.Timestamp時(shí)間戳案例詳解

    Java java.sql.Timestamp時(shí)間戳案例詳解

    這篇文章主要介紹了Java java.sql.Timestamp時(shí)間戳案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 在Spring Boot中如何使用log4j記錄日志

    在Spring Boot中如何使用log4j記錄日志

    這篇文章主要介紹如何在spring boot中引入log4j,以及一些基礎(chǔ)用法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-02-02
  • Java實(shí)現(xiàn)數(shù)獨(dú)小游戲

    Java實(shí)現(xiàn)數(shù)獨(dú)小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)數(shù)獨(dú)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Java文件處理之使用itextpdf實(shí)現(xiàn)excel轉(zhuǎn)pdf

    Java文件處理之使用itextpdf實(shí)現(xiàn)excel轉(zhuǎn)pdf

    在文件處理中,經(jīng)常有文件類(lèi)型轉(zhuǎn)換的使用場(chǎng)景,本文主要介紹了如何使用poi以及itextpdf完成excel轉(zhuǎn)pdf的操作,需要的小伙伴可以參考一下
    2024-02-02
  • Java中switch的三種用法方式

    Java中switch的三種用法方式

    這篇文章主要介紹了Java中switch的三種用法方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java實(shí)現(xiàn)顏色漸變效果

    Java實(shí)現(xiàn)顏色漸變效果

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)顏色漸變效果的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Java SpringBoot快速集成SpringBootAdmin管控臺(tái)監(jiān)控服務(wù)詳解

    Java SpringBoot快速集成SpringBootAdmin管控臺(tái)監(jiān)控服務(wù)詳解

    這篇文章主要介紹了如何基于springboot-admin管控臺(tái)監(jiān)控服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Tomcat能起開(kāi),但是訪問(wèn)不進(jìn)8080首頁(yè)的問(wèn)題解決方案

    Tomcat能起開(kāi),但是訪問(wèn)不進(jìn)8080首頁(yè)的問(wèn)題解決方案

    這篇文章主要介紹了Tomcat能起開(kāi),但是訪問(wèn)不進(jìn)8080首頁(yè)的問(wèn)題解決方案的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評(píng)論