java分割字符串split()使用需注意的地方,转义字符使用

来源:互联网 发布:js 数组遍历 foreach 编辑:程序博客网 时间:2024/06/10 07:35

在Java程序中,由于系统类库的支持,分割字符串变得很容易,但是,在使用spilt方法时,有些细节不容忽视。当使用”+”、”?”、”\”、”“、”^”、”.”等特殊字符分割字符串时,若不进行特殊字符的转义,将得不到正确的结果,有些还会报错。仔细研究API中spilt方法的介绍,才知晓其中原委。API中的描述,public String[] spilt(String regex),从参数名即可看出,方法传入的参数不是任意的字符串,而是正则表达式,spilt方法实质上是调用的matcher类的spilt方法,而”+”、”?”、”\”、”“、”^”、”.”、”$”等这些字符在正则表达式中都有特殊的意义.
特殊的符号需要进行转义,就是给符号前加 两个反斜杠。反斜杠是个特列,如下所示。

 "\"  转义时要写成"\\\\" "+" 转义时要写成“\\+" "*" 转义时要写成  "\\*" "." 转义时要写成 "\\."

以上只是用一个字符进行分割,其他单个特殊字符分割相同。多个字符的拆分方法类似。

如下是一个好用的工具类:

public List<String>    // srcString 被分割的字符串     // c  分隔符     spiltString(String srcString,String c){        // 返回分割结果数组存入list中返回         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;        }    }
阅读全文
0 0
原创粉丝点击