zoukankan      html  css  js  c++  java
  • 字符串分割注意事项

     
    Java程序中,由于系统类库的支持,分割字符串变得很容易,但是,在使用spilt方法时,有些细节不容忽视。当使用"|"、"+"、"?"、""、"*"、"^"、"."等特殊字符分割字符串时,若不进行特殊字符的转义,将得不到正确的结果,有些还会报错。仔细研究API中spilt方法的介绍,才知晓其中原委。API中的描述,public String[]  spilt(String regex),从参数名即可看出,方法传入的参数不是任意的字符串,而是正则表达式,spilt方法实质上是调用的matcher类的spilt方法,而"+"、"?"、""、"*"、"^"、"."、"$"等这些字符在正则表达式中都有特殊的意义,使用的时候需要对其进行转义,如下代码是个简单的分割字符串的方法:
     
    public List<String> spiltString(String srcString, String c) {
            List<String> destString = new ArrayList<String>();
            if (srcString == null || c == null) {
                return null;
            } else {
                // 特殊字符需转义
                if ("\".equals(c)) {
                    c = "\\";
                } else {
                    String rex = "[*+?|.$^]";
                    Pattern pattern = Pattern.compile(rex);
                    Matcher mat = pattern.matcher(c);
                    if (mat.matches()) {
                        // 特殊字符需转义
                        c = "\" + c;
                    }
                }
                String[] temp = srcString.split(c);
                for (String str : temp) {
                    if (!str.equals("")) {
                        destString.add(str);
                    }
                }
                return destString;
            }
        }

     要注意的是,""转义时要写成"\\",“+”转义时要写成“\+","*"转义时要写成”\*",以上只是用一个字符进行分割,多个字符的拆分方法类似

     
    具体实例:
    【1】单个符号作为分隔符 
         String address="上海|上海市|闵行区|吴中路";
         String[] splitAddress=address.split("\|"); //如果以竖线为分隔符,则split的时候需要加上两个斜杠【\】进行转义
         System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]);
        
         String address="上海*上海市*闵行区*吴中路";
         String[] splitAddress=address.split("\*");
         System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]);
        
         String address="上海:上海市:闵行区:吴中路";
         String[] splitAddress=address.split("\:");
         System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]);
     
         String address="上海.上海市.闵行区.吴中路";
         String[] splitAddress=address.split("\.");
         System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]);
        
         String address="上海^上海市^闵行区^吴中路";
         String[] splitAddress=address.split("\^");
         System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]);
        
         String address="上海@上海市@闵行区@吴中路";
         String[] splitAddress=address.split("@");
         System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]);
        
         String address="上海,上海市,闵行区,吴中路";
         String[] splitAddress=address.split(",");
         System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]);
     
    【2】多个符号作为分隔符
          String address="上海^上海市@闵行区#吴中路";
         String[] splitAddress=address.split("\^|@|#");
         System.out.println(splitAddress[0]+splitAddress[1]+splitAddress[2]+splitAddress[3]);

     输出格式:上海上海市闵行区吴中路

     
    总结:
    (1)split表达式,其实就是一个正则表达式。*  ^ | 等符号在正则表达式中属于一种有特殊含义的字符,如果使用此种字符作为分隔符,必须使用转义符即\加以转义。
    (2)如果使用多个分隔符则需要借助 | 符号,如【2】所示,但需要转义符的仍然要加上分隔符进行处理。
     
     
  • 相关阅读:
    HTML 005 标题
    HTML 004 属性
    javascript的html编码函数 (htmlSpecialChars-处理特殊字符)
    js生成二维码实例(真实有效)
    sublime快捷键
    利用jq并且添加上cookie的网页换肤
    阻止表单的默认行为
    阻止事件冒泡
    js控制图片提示(鼠标滑过显示大图片)
    jQuery.cookie插件用法自我总结
  • 原文地址:https://www.cnblogs.com/leskang/p/6491907.html
Copyright © 2011-2022 走看看