posts - 59, comments - 244, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
          在制作模板內容輸出時,很經常會使用<%=%>之類的占位符,用正則的方式很方便替換這個內容,工作中只接觸到java、php、js,三種語言的簡單的實現方式:
          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>

          運行結果輸出:
          2013-01-17, Hello penngo
          主站蜘蛛池模板: 汶上县| 博爱县| 白朗县| 洛宁县| 营口市| 灵寿县| 烟台市| 全南县| 沅江市| 清苑县| 金秀| 甘谷县| 平潭县| 孝感市| 安庆市| 商城县| 五常市| 蒙城县| 出国| 留坝县| 远安县| 溧水县| 城市| 淄博市| 咸阳市| 松滋市| 渭源县| 洞头县| 织金县| 收藏| 尚志市| 安西县| 泗洪县| 开封县| 阜新| 西和县| 高尔夫| 梨树县| 延寿县| 繁昌县| 惠安县|