java字符串中${}或者{}等的占位符替換工具類

正如標題所述,這是一個替換java字符串中${}或者{}等占位符的工具類,其處理性能比較令人滿意。該類主要通過簡單的改寫myatis框架中的GenericTokenParser類得到。在日常開發過程中,可以將該類進行簡單的改進或封裝,就可以用在需要打印日志的場景中,現在張貼出來給有需要的人,使用方式參考main方法,不再贅述!

肇州網站制作公司哪家好,找成都創新互聯公司!從網頁設計、網站建設、微信開發、APP開發、成都響應式網站建設等網站項目制作,到程序開發,運營維護。成都創新互聯公司成立與2013年到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選成都創新互聯公司

public class Parser {
  /**
   * 將字符串text中由openToken和closeToken組成的占位符依次替換為args數組中的值
   * @param openToken
   * @param closeToken
   * @param text
   * @param args
   * @return
   */
  public static String parse(String openToken, String closeToken, String text, Object... args) {
    if (args == null || args.length <= 0) {
      return text;
    }
    int argsIndex = 0;
    if (text == null || text.isEmpty()) {
      return "";
    }
    char[] src = text.toCharArray();
    int offset = 0;
    // search open token
    int start = text.indexOf(openToken, offset);
    if (start == -1) {
      return text;
    }
    final StringBuilder builder = new StringBuilder();
    StringBuilder expression = null;
    while (start > -1) {
      if (start > 0 && src[start - 1] == '\\') {
        // this open token is escaped. remove the backslash and continue.
        builder.append(src, offset, start - offset - 1).append(openToken);
        offset = start + openToken.length();
      } else {
        // found open token. let's search close token.
        if (expression == null) {
          expression = new StringBuilder();
        } else {
          expression.setLength(0);
        }
        builder.append(src, offset, start - offset);
        offset = start + openToken.length();
        int end = text.indexOf(closeToken, offset);
        while (end > -1) {
          if (end > offset && src[end - 1] == '\\') {
            // this close token is escaped. remove the backslash and continue.
            expression.append(src, offset, end - offset - 1).append(closeToken);
            offset = end + closeToken.length();
            end = text.indexOf(closeToken, offset);
          } else {
            expression.append(src, offset, end - offset);
            offset = end + closeToken.length();
            break;
          }
        }
        if (end == -1) {
          // close token was not found.
          builder.append(src, start, src.length - start);
          offset = src.length;
        } else {
          ///////////////////////////////////////僅僅修改了該else分支下的個別行代碼////////////////////////
          String value = (argsIndex <= args.length - 1) ?
              (args[argsIndex] == null ? "" : args[argsIndex].toString()) : expression.toString();
          builder.append(value);
          offset = end + closeToken.length();
          argsIndex++;
          ////////////////////////////////////////////////////////////////////////////////////////////////
        }
      }
      start = text.indexOf(openToken, offset);
    }
    if (offset < src.length) {
      builder.append(src, offset, src.length - offset);
    }
    return builder.toString();
  }
  public static String parse0(String text, Object... args) {
    return Parser.parse("${", "}", text, args);
  }
  public static String parse1(String text, Object... args) {
    return Parser.parse("{", "}", text, args);
  }
  /**
   * 使用示例
   * @param args
   */
  public static void main(String... args) {
    //{}被轉義,不會被替換
    System.out.println(Parser.parse("{", "}", "我的名字是\\{},結果是{},可信度是%{}", "雷鋒", true, 100));
    System.out.println(Parser.parse0("我的名字是${},結果是${},可信度是%${}", "雷鋒", true, 100));
    System.out.println(Parser.parse1("我的名字是{},結果是{},可信度是%{}", "雷鋒", true, 100));
//    輸出結果如下:
//    我的名字是{},結果是true,可信度是%100
//    我的名字是雷鋒,結果是true,可信度是%100
//    我的名字是雷鋒,結果是true,可信度是%100
  }
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對創新互聯的支持。如果你想了解更多相關內容請查看下面相關鏈接

分享文章:java字符串中${}或者{}等的占位符替換工具類
地址分享:http://m.kartarina.com/article42/pgoehc.html

成都網站建設公司_創新互聯,為您提供網站策劃微信小程序商城網站品牌網站制作網站維護動態網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設
主站蜘蛛池模板: 国产精品JIZZ在线观看无码| 精品无码人妻一区二区三区| 国产午夜无码片在线观看影院| 成在人线AV无码免费| 亚洲av麻豆aⅴ无码电影| 久久人妻内射无码一区三区| 毛片无码一区二区三区a片视频| 精品久久久无码中文字幕| 亚洲AV无码无限在线观看不卡| 无码毛片一区二区三区中文字幕| 无码中文字幕日韩专区| 日韩专区无码人妻| 亚洲午夜无码毛片av久久京东热| 免费无码黄网站在线看| 国产精品无码aⅴ嫩草| 无码av人妻一区二区三区四区| 亚洲AV综合色区无码一区| 东京热人妻无码人av| 熟妇人妻无码中文字幕老熟妇| 欧洲无码一区二区三区在线观看| 亚洲精品无码国产| 中文字幕无码久久人妻| 日产无码1区2区在线观看| 成人免费a级毛片无码网站入口| 人妻无码αv中文字幕久久琪琪布| 日日摸夜夜爽无码毛片精选| 人妻无码一区二区三区| 国产成人亚洲精品无码AV大片| 蜜臀亚洲AV无码精品国产午夜.| 亚洲成a人无码亚洲成av无码| 久久久久亚洲av无码专区喷水| 国产精品无码av在线播放| 国产日韩精品中文字无码| 国产成人精品一区二区三区无码 | 无码夜色一区二区三区| 亚洲国产日产无码精品| 久久无码人妻一区二区三区 | 免费无码VA一区二区三区| 无码欧精品亚洲日韩一区夜夜嗨 | 无码国产精品一区二区免费16 | 人妻丝袜中文无码av影音先锋专区|