赞
踩
还是老样子,废话不多说,这里直接讲代码,后面讲故事。
1、直接调用split方法,如果没有效果,带上英文的中括号就可以了。当然也可以使用两个\\来替换。效果是一样的。
- public static void main(String[] args) {
- // 特殊符号【+】,【|】,【*】,【.】,【?】,【$】
- // 上面这6种特殊符号在split方法中会失效
- // 处理办法就是加上英文的中括号[]
- String text = "dd|cc|aa";
- String splitStr = "|";
- String[] texts = text.split(splitStr);
- // 由于没有做特殊处理,所以这里的结果是错误的
- // 由于没有做特殊处理,所以这里的结果是错误的
- // 由于没有做特殊处理,所以这里的结果是错误的
- log.info("texts={}",Arrays.asList(texts));
-
-
- // ------------------下面的结果都是正常的,随便选择一种方法
- // ------------------下面的结果都是正常的,随便选择一种方法
- // ------------------下面的结果都是正常的,随便选择一种方法
- // 这里加上英文的中括号,就正常了
- splitStr = "[|]";
- texts = text.split(splitStr);
- log.info("texts 加上英文中括号结果={}",Arrays.asList(texts));
-
- text = "馒头*面包*方便面";
- // 这里加上英文的中括号,就正常了
- splitStr = "[*]";
- texts = text.split(splitStr);
- log.info("texts 加上英文中括号结果={}",Arrays.asList(texts));
-
-
- text = "172.168.100.110";
- // 这里加上英文的中括号,就正常了
- splitStr = "[.]";
- texts = text.split(splitStr);
- log.info("texts 加上英文中括号[.]结果={}",Arrays.asList(texts));
-
- // 这里使用两个英文的反斜杠转义为特殊字符点,就正常了
- splitStr = "\\.";
- texts = text.split(splitStr);
- log.info("texts 加上英文两个斜杠\\\\.结果={}",Arrays.asList(texts));
-
- }
2、控制台的输出结果,如下
- 16:06:58.828 [main] INFO cn.renkai721.controller.AsyncTestController - texts=[d, d, |, c, c, |, a, a]
- 16:06:58.830 [main] INFO cn.renkai721.controller.AsyncTestController - texts 加上英文中括号结果=[dd, cc, aa]
- 16:06:58.830 [main] INFO cn.renkai721.controller.AsyncTestController - texts 加上英文中括号结果=[馒头, 面包, 方便面]
- 16:06:58.830 [main] INFO cn.renkai721.controller.AsyncTestController - texts 加上英文中括号[.]结果=[172, 168, 100, 110]
- 16:06:58.830 [main] INFO cn.renkai721.controller.AsyncTestController - texts 加上英文两个斜杠\\.结果=[172, 168, 100, 110]
-
- Process finished with exit code 0
1、split方法中的特殊字符一共有6个,分别是【+】,【|】,【*】,【.】,【?】,【$】。大家在使用split的方法时候,是要进行特殊处理的,否则是没有效果的。
2、还有一种很暴力的方法,就是先replace方法把这些特殊字符转换为普通的符号,例如英文的逗号,在调用split方法就可以了。
3、查阅split官网的使用规则及操作。大概的翻译如下,以下翻译来自有道翻译。
此方法返回的数组包含this的每个子字符串
由另一个匹配给定的子字符串终止的字符串
表达式或以字符串结尾结束。的子字符串
数组按照它们在这个字符串中出现的顺序排列。如果
表达式不匹配输入的任何部分,然后匹配结果数组
只有一个元素,即这个字符串。
当在此开头有一个正宽度匹配时
字符串,则在开头包含一个空的前导子字符串
结果数组的。然而,一开始是零宽度的匹配
永远不要产生这样的空前导子字符串。
参数{@code limit}控制
模式被应用,因此影响结果的长度
数组中。如果极限<i>n</i>大于零,则模式
将被应用最多<i>n</i>1次,数组的
长度将不大于<i>n</i>,以及数组的最后一个条目
将包含最后一个匹配的分隔符以外的所有输入。如果n <我> < / i >
那么是非正的模式会被应用多少次
可能的和数组可以有任何长度。如果<i>n</i>为零,那么
该模式将被应用尽可能多的次数,数组可以
如果有任何长度,那么后面的空字符串将被丢弃。
例如,字符串{@code "boo:and:foo"}将生成
以下是带有这些参数的结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。