Java学习笔记--split篇

来源:互联网 发布:linux signal 编辑:程序博客网 时间:2024/06/16 14:26

Java使用split分割字符串时需要注意如下问题

  1. 分隔符使用特殊字符
[java] view plain copy print?01.String str = "1|2|3|4";  02.String[] arr = str.split("\\|");  03.System.out.println(Arrays.toString(arr));  String str = "1|2|3|4";String[] arr = str.split("\\|");System.out.println(Arrays.toString(arr));

jdk doc中说明

public String[] split(String regex)

Splits this string around matches of the given regular expression.

参数regex是一个regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果:

1) 用竖线 | 分隔字符串,你将得不到预期的结果。

2) 用 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。

显然,| + * 不是有效的模式匹配规则表达式,用”\*” “\+”转义后即可得到正确的字符串结果。

“|” 分隔串时虽然能够执行,但是却不是预期的目的,得到的是每个字符的分割,而不是字符串,”\|”转义后即可得到正确的字符串结果。

  1. split丢失结尾空字符串的问题
[java] view plain copy print?01.String str = "1||3|";  02.String[] arr = str.split("\\|");  String str = "1||3|";String[] arr = str.split("\\|");//这样得到的字符串的长度为3,结尾的空字符串被丢弃了。

使用该函数的另外一个重载方法

[java] view plain copy print?01.String str = "1|2|3|";  02.String[] arr = str.split("\\|", -1);  String str = "1|2|3|";String[] arr = str.split("\\|", -1);public String [] split (String  regex, int limit) 

limit参数控制模式应用的次数,因此影响所得数组的长度。

如果该限制n大于0,则模式将被最多应用n-1次,数组的长度将不会大于n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。

如果n为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。

如果n为0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

0 0
原创粉丝点击