zoukankan      html  css  js  c++  java
  • javascript特殊符号

    javascript和JAVA一样,一些特殊字符需要转义   
        
    特别是在一些JSP网页的开发中,好多程序员经常会忘掉这点,   
    例:   
    1 <% List textList = (List)request.getAttribute("textList"); %>   
    2 <script>   
    3 <!--   
    4 var txtList = new Array();   
    5 <% for ( int i = 0 ; i < textList.size() ; i++) { %>   
    6 txtList[<%=i%>] = "<%=textList.get(i)%>";   
    7 <% } %>   
    8 -->   
    9 </script>   
        
    这段JS就存在问题,未对特殊符号进行处理.有特殊符号的情况下有可能报JSERROR   
        
    JAVASCRIPT中需要转义的有:   
        
    转义序列 字符    
    \b 退格    
    \f 走纸换页    
    \n 换行    
    \r 回车    
    \t 横向跳格 (Ctrl-I)    
    \' 单引号    
    \" 双引号    
    \\ 反斜杠    
      
    此外,对/符号我觉得也有必要进行处理,因为象 --></script> 这样的字符串也会使SCRIPT出错.   
        
    下面提供一个比较实用java的方法,做这个特殊符号的处理:   
     1public class JavaScriptUtils {   
     2 public static String javaScriptEscape(String input) {   
     3  if (input == null) {   
     4   return input;   
     5  }   
     6  StringBuffer filtered = new StringBuffer(input.length());   
     7  char prevChar = '\u0000';   
     8  char c;   
     9  for (int i = 0; i < input.length(); i++) {   
    10   c = input.charAt(i);   
    11   if (c == '"') {   
    12    filtered.append("\\\"");   
    13   }   
    14   else if (c == '\'') {   
    15    filtered.append("\\'");   
    16   }   
    17   else if (c == '\\') {   
    18    filtered.append("\\\\");   
    19   }   
    20   else if (c == '\t') {   
    21    filtered.append("\\t");   
    22   }   
    23   else if (c == '\n') {   
    24    if (prevChar != '\r') {   
    25     filtered.append("\\n");   
    26    }   
    27   }   
    28   else if (c == '\r') {   
    29    filtered.append("\\n");   
    30   } else if (c == '\f') {   
    31                filtered.append("\\f");   
    32  } else if (c == '/') {   
    33                filtered.append("\\/");   
    34            }   
    35   else {   
    36    filtered.append(c);   
    37   }   
    38   prevChar = c;   
    39  }   
    40  return filtered.toString();   
    41 }   
    42}   
    43  
      
    上面的例子应改为:   
    1 <% List textList = (List)request.getAttribute("textList"); %>   
    2 <script>   
    3 <!--   
    4 var txtList = new Array();   
    5 <% for ( int i = 0 ; i < textList.size() ; i++) { %>   
    6 txtList[<%=i%>] = "<%=JavaScriptUtils.javaScriptEscape(textList.get(i))%>";   
    7 <% } %>   
    8 -->   
    9 </script>  
     
  • 相关阅读:
    2020杭电HDU-6831多校第六场Fragrant numbers(区间DP打表)
    Gym 102219H-Are You Safe?(凸包求解+判断点与凸包关系)
    2020杭电HDU-6827多校第六场Road To The 3rd Building(找规律求期望)
    洛谷P1099&Noip 2007提高-树网的核(树直径上的尺取)
    2020杭电HDU-6832多校第六场A Very Easy Graph Problem(最短路转最小生成树+dfs)
    CodeForces 950D-A Leapfrog in the Array(打表找规律)
    使用odoo价格表[pricelist]对价格进行特别处理,如 .99
    odoo 10 生产自动领料
    安装odoo服务
    advanced validation on purchase.
  • 原文地址:https://www.cnblogs.com/huapox/p/3299867.html
Copyright © 2011-2022 走看看