转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51306794   文章出自:薛瑄的博客

你也可以查看我的其他同类文章,也会让你有一定的收货!

split

  1. 可以使用正则表达式,
  2. 注意: |, ., &, *, + 是转义字符, 要加\\
public String[] split(String regex) 
  
  • 1

 

Splits this string around matches of the given regular expression.
  参数regex是一个 regular-expression的匹配模式而不是一个简单的String

他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:

使用特殊字符切割字符串的三种方法

一、转义字符

(1) “|” 分隔串时虽然能够执行,但是却不是预期的目的,转义后即可得到正确的结果。

//String[] s = "aaa|bbb|ccc".split("|"); //正确方法如下String[] s = "aaa|bbb|ccc".split("\\|"); 
  
  • 1
  • 2
  • 3

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

String[] aa = "aaa*bbb*ccc".split("*"); //正确方法如下String[] aa = "aaa|bbb|ccc".split("\\*"); 
  
  • 1
  • 2
  • 3
  • 4

(3)在串中使用”“字符,则也需要转义.首先要表达”aaaa\bbbb”这个串就应该用”aaaa\ \bbbb”,如果要分隔就应该这样才能得到正确结果:

String[] s = "aaa\\bbb\\bccc".split("\\\\"); 
  
  • 1

(4) 还有就是点号”.”,也要首先转义才能得到正确的结果。

二、把切割字符,赋给一个String变量中

String a = "&";String[] s = "aaa&bbb&ccc".split(a); 
  
  • 1
  • 2

其余特殊字符未亲测,效果应该一样

三、使用转义字符

这种方法没有亲测

点的转义:. ==> u002E 
美元符号的转义:$ ==> u0024 
乘方符号的转义:^ ==> u005E 
左大括号的转义:{ ==> u007B 
左方括号的转义:[ ==> u005B 
左圆括号的转义:( ==> u0028 
竖线的转义:| ==> u007C 
右圆括号的转义:) ==> u0029 
星号的转义:* ==> u002A 
加号的转义:+ ==> u002B 
问号的转义:? ==> u003F 
反斜杠的转义: ==> u005C

String str2="a&b&c"; String strs[]=str2.split("//u0024"); for(String str:strs){ System.out.println(str); }
  
  • 1
  • 2
  • 3
  • 4
  • 5

如果是两个&&号那就//u0024//u0024了

参考:

http://java.freesion.com/article/9186972231/;jsessionid=A774838DA80F3BF30E85C8B178116FAB
http://blog.sina.com.cn/s/blog_6b873f290100q31q.html

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow


版权声明:本文为qq_43667831原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_43667831/article/details/86749157