可以用java的字符串分析器也可以实现的。

解决方案 »

  1.   

    可以用java的字符串分析器也可以实现的。
      

  2.   

    为什么要过滤掉呢?是insert数据库有问题吗?如果是因为sql语句内容再怎么处理都治标不治本,建议采用PreparedStatement就可以了如果不是的话,那就用Java提供的正则表达式、或Token处理
    public static String Demo(String sSource) {
    Pattern p = null; //正则表达式
    Matcher m = null; //操作的字符串
    String s = null, sTmp = null;
    StringBuffer sb = null;
    p = Pattern.compile("('|\\"))", Pattern.CASE_INSENSITIVE);
    m = p.matcher(sSource);
    sb = new StringBuffer();
    while (m.find()) {
    sTmp = m.group().toLowerCase();
    if (sTmp.equals("'"))
    s = "&#39";
    else if (sTmp.equals("\""))
    s = """ m.appendReplacement(sb, s);
    }
    m.appendTail(sb);
    return sb.toString();
    }
      

  3.   

    严重关注,小弟也正为此事发愁!~
    防止输入单引号和双引号只是一种防止出错的方法,但如果将其转换为转义字符或许会更好一点...
    与楼主一起学习,以下是我找的一段代码://取代全部字串的函數
    public String replace(String src, String astr, String bstr) {
      int index = 0;  StringBuffer sb = new StringBuffer();
        do {    index = src.indexOf(astr);
        if(index == -1) sb.append(src);
        else {
          sb.append(src.substring(0,index));
          sb.append(bstr);
          src = src.substring(index + astr.length());
        }
      } while(index != -1);
      
      return sb.toString();
    }JDK 1.4有String.replaceAll( ) 和 String.split() 可以直接置换
    但我用的是JDK 1.3
      

  4.   

    public static String ReplaceChars(String str)
      {
       String ret = str;
       ret = ret.replaceAll("'","''");
       ret = ret.replaceAll("&", "&"); // must call it in first
       ret = ret.replaceAll("<", "&lt;");
       ret = ret.replaceAll(">", "&gt;");
       ret = ret.replaceAll("\"", "&quot;");
       return ret;
      }