posts - 59, comments - 244, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          在制作模板內(nèi)容輸出時(shí),很經(jīng)常會(huì)使用<%=%>之類的占位符,用正則的方式很方便替換這個(gè)內(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
          主站蜘蛛池模板: 台南市| 白玉县| 津市市| 安庆市| 东源县| 桃园市| 尚志市| 奉化市| 石首市| 潮州市| 罗江县| 大埔区| 丰都县| 清远市| 柘荣县| 刚察县| 罗江县| 福建省| 行唐县| 苍山县| 东乡| 横峰县| 台南县| 石楼县| 梅州市| 玉树县| 柳河县| 休宁县| 连平县| 崇左市| 浪卡子县| SHOW| 垦利县| 赣州市| 东莞市| 资源县| 原阳县| 怀远县| 嘉定区| 九龙城区| 丁青县|