posts - 59, comments - 244, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          在制作模板內(nèi)容輸出時(shí),很經(jīng)常會(huì)使用<%=%>之類(lèi)的占位符,用正則的方式很方便替換這個(gè)內(nèi)容,工作中只接觸到j(luò)ava、php、js,三種語(yǔ)言的簡(jiǎn)單的實(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
          主站蜘蛛池模板: 黄冈市| 安丘市| 丹凤县| 磐石市| 枣庄市| 营口市| 富源县| 乌兰浩特市| 蒙自县| 白银市| 南昌县| 甘泉县| 涿州市| 和静县| 泽库县| 微博| 吉木乃县| 曲阳县| 怀宁县| 张家港市| 乌拉特中旗| 望奎县| 太仆寺旗| 江达县| 潜江市| 天祝| 建宁县| 安庆市| 绵阳市| 荣昌县| 屯门区| 赣榆县| 郴州市| 张家口市| 乃东县| 三原县| 青河县| 卓尼县| 洛扎县| 乌恰县| 昌都县|