posts - 59, comments - 244, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          在制作模板內(nèi)容輸出時,很經(jīng)常會使用<%=%>之類的占位符,用正則的方式很方便替換這個內(nèi)容,工作中只接觸到j(luò)ava、php、js,三種語言的簡單的實(shí)現(xiàn)方式:
          java版
          import java.util.HashMap;
          import java.util.Map;
          import java.util.regex.Matcher;
          import java.util.regex.Pattern;

          public class TestRex {
              public static void main(String[] args) {
                  Map<String, String> map = new HashMap<String, String>();
                  map.put("name", "penngo");
                  map.put("date", "2013-01-17");
                  Pattern p = Pattern.compile("<%=(\\w+?)%>");
                  String str = "<%=date%>, Hello <%=name%>";
                  Matcher m = p.matcher(str);
                  StringBuffer sb = new StringBuffer();
                  boolean result = m.find();
                  while (result) {
                      String key = m.group(1);
                      String value = map.get(key);
                      m.appendReplacement(sb, value);
                      result = m.find();
                  }
                  m.appendTail(sb);
                  System.out.println(sb.toString());
              }
          }

          php版
          <?php
              $data = array('name'=>'penngo', 'date'=>'2013-01-17');
              function replaceStr($key$data){
                  return $data[$key];
              }
              $str = '<%=date%>, Hello <%=name%>';
              $str = preg_replace("/<%=(\w+?)%>/ise", "replaceStr('\\1', \$data)", $str);
              echo $str;
          ?>

          js版
          <html>
          <head>
              <meta charset="UTF-8">
              <script type="text/javascript">
              var date = {'name':'penngo', 'date':'2013-01-17'};
              var str = '<%=date%>, Hello <%=name%>';
              str = str.replace(/<%=(\w+?)%>/g, function($0, $1){
                  var value = date[$1];
                  return value;
              });
              document.write(str);
              </script>
          </head>
          <body>
              
          </body>
          </html>

          運(yùn)行結(jié)果輸出:
          2013-01-17, Hello penngo
          主站蜘蛛池模板: 长丰县| 博爱县| 通州区| 霍州市| 十堰市| 新郑市| 西平县| 民乐县| 体育| 宜君县| 巴青县| 德钦县| 汕头市| 黎川县| 古丈县| 晋江市| 岢岚县| 绥阳县| 祁阳县| 大同市| 武宁县| 乐都县| 岳西县| 高台县| 武清区| 奉新县| 益阳市| 马尔康县| 杭州市| 贵州省| 都匀市| 丘北县| 稻城县| 五常市| 泉州市| 嘉兴市| 满洲里市| 东宁县| 本溪市| 科技| 石柱|