java中string.split()用正则表达式分割字符串,返回匹配分隔符后的子串数组;需转义特殊字符(如“.”写为“.”),支持限制参数控制空项与分割次数,null输入会抛npe。

Java 中 String.split() 方法用正则表达式分割字符串,核心是传入一个符合规则的正则表达式作为分隔符。它返回一个字符串数组,不匹配的部分就是分割后的子串。
基础用法:按常见字符分割
最常用的是按空格、逗号、点号等简单符号切分。注意部分特殊字符(如 .、|、$、*)在正则中有含义,需转义。
- 按英文逗号分割:
"a,b,c".split(",")→["a", "b", "c"] - 按点号分割(需转义):
"192.168.1.1".split("\.")→["192", "168", "1", "1"] - 按多个空格或制表符分割:
"a b c".split("\s+")→["a", "b", "c"]
处理连续分隔符和首尾空白
默认情况下,连续分隔符会产生空字符串;开头或结尾的分隔符也会导致数组首尾出现空元素。可用限制参数控制。
- 去掉末尾空项:
"a,,b,".split(",", -1)保留所有(含空串);.split(",", 0)等价于-1,但会自动去除末尾空串 - 限制分割次数:
"a:b:c:d".split(":", 2)→["a", "b:c:d"],只切一次,剩下部分不拆 - 避免空字符串:
" a b c ".split("\s+");自动跳过前后空白,结果不含空串
使用复杂正则匹配多种分隔符
可以组合多个分隔条件,比如同时按逗号、分号、空格切分。
- 多分隔符:
"a,b; c".split("[,;\s]+")→["a", "b", "c"],[,;\s]表示“逗号、分号或空白”,+表示连续出现也只算一次分割 - 忽略大小写或特殊边界:
"apple|banana|Cherry".split("\|")→ 按竖线分割(|是正则的“或”操作符,必须转义) - 用括号捕获组?注意:
split()不支持捕获组影响结果,只看匹配位置,括号仅用于分组逻辑
注意事项和常见坑
几个容易出错的地方要特别留意:
-
split(".")会把整个字符串拆成单个字符,因为.在正则中匹配任意字符,必须写成split("\.") -
split("")非法,空字符串不是有效正则,会抛PatternSyntaxException - 字符串为
null时调用split()会抛NullPointerException,需提前判空 - 如果分隔符本身是正则元字符(如
^ $ [ ] ( ) { } ? * + \ | .),多数都要加双反斜杠转义
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











