您的位置:首页 > 编程语言 > Java开发

java中split方法的特殊用法

2017-08-18 18:45 281 查看
在java.lang.String类中有split()方法,返回是一个数组,api文档中的描述如下:

public String[] split(String regex)

根据给定正则表达式的匹配拆分此字符串。

1、通常用法如下:

    String t = "abcdxefg";

    String[] arr = t.split("x");

最后得到的数组是:"abcd", "efg"。

2、由api文档中的描述可以看出:参数regex是正则表达式。说到正则表达式,就要考虑到元字符的特殊情况。正则表达式中的元字符有(共12个):$ ( ) * + . ? [ \ ^ { | 

如果直接用这些元字符来拆分字符串,会有什么结果呢?举例如下:

    String t = "abcd$efg";

    String[] arr = t.split("$");

如果将举例中的"$"依次替换为其他元字符,结果有5种情况:

①\ :编译错误。

②( ) * + ? [ { :运行时会报java.util.regex.PatternSyntaxException错误。

③. :得到的数组为空,数组长度为0。

④$ ^ :字符串没有被拆分,得到的数组依然是字符串本身,数组长度为1。

⑤| :得到字符串中每个字符组成的数组,数组长度为字符串长度+1。

对于②③④⑤的情况,可以通过将split参数中每个元字符前添加"\\"来解决。比如将"$"替换成"\\$"。

而对于①的情况,由于"\"本身对于java来说也是用于转义的特殊字符,所以处理方式稍有不同。需要同时将两个字符串进行修改:

    String t = "abcd\\efg";

    String[] arr = t.split("\\\\");

3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,例如:

    String t = "abcdxefgyhijkxlmn";

    String[] arr = t.split("x|y");

最后得到的数组是:"abcd", "efg", "hijk", "lmn"。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: