String[] String.split(String),split方法用来分割解析一个字符串。今天在使用它的时候,因为一个小小的不注意,浪费了半个小时的时间。
示例代码如下:
public class Test {
public static void main(String[] args) {
String init ="a$c$";
String[] strs = init.split("$");
System.out.println("length=" + strs.length);
}
}
但却没有得到预期的结果。回头检查,半角全角没有问题。bug到底出在什么地方,将$换成#,结果可以得到预期结果。
回头看JavaDoc, 原来split函数的参数是一个String类型的正则表达式,而正则表达式中有许多特殊字符,非常不幸,$正是其中的一个。
将$换成//$,OK!
其它特殊字符还有如下
| 字符 | 说明 |
| ^ | 匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "/^" |
| $ | 匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "/$" |
| ( ) | 标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "/(" 和 "/)" |
| [ ] | 用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "/[" 和 "/]" |
| { } | 修饰匹配次数的符号。要匹配大括号,请使用 "/{" 和 "/}" |
| . | 匹配除了换行符(/n)以外的任意一个字符。要匹配小数点本身,请使用 "/." |
| ? | 修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "/?" |
| + | 修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "/+" |
| * | 修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "/*" |
| | | 左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "/|" |
8403

被折叠的 条评论
为什么被折叠?



