如何在Java中拆分字符串:详解String类的split()方法
4.11 String拆分
“哥,我感觉字符串拆分没什么可讲的呀,直接上 String 类的 split() 方法不就可以了!”三妹毫不客气地说。
“假如你真的这么觉得,那可要注意了,事情远没这么简单。”我微笑着说。
假如现在有这样一串字符序列“沉默王二,一枚有趣的程序员”,需要按照中文逗号“,”进行拆分,这意味着第一串字符序列为逗号前面的“沉默王二”,第二串字符序列为逗号后面的“一枚有趣的程序员”。
“这不等于没说吗?哥!”还没等我说,三妹就打断了我。
“别着急嘛,等哥说完。”我依然保持着微笑继续说,“在拆分之前,要先进行检查,判断一下这串字符是否包含逗号,否则应该抛出异常。”
public class Test {
public static void main(String[] args) {
String cmower = "沉默王二,一枚有趣的程序员";
if (cmower.contains(",")) {
String [] parts = cmower.split(",");
System.out.println("第一部分:" + parts[0] +" 第二部分:" + parts[1]);
} else {
throw new IllegalArgumentException("当前字符串没有包含逗号");
}
}
}
“三妹你看,这段代码挺严谨的吧?”我说,“来看一下程序的输出结果。”
第一部分:沉默王二 第二部分:一枚有趣的程序员
“的确和预期完全一致。”三妹说。
“这是建立在字符串是确定的情况下,最重要的是分隔符是确定的。否则,麻烦就来了。”我说,“大约有 12 种英文特殊符号,如果直接拿这些特殊符号替换上面代码中的分隔符(中文逗号),这段程序在运行的时候就会出现以下提到的错误。”
- 反斜杠
\(ArrayIndexOutOfBoundsException) - 插入符号
^(同上) - 美元符号
$(同上) - 逗点
.(同上) - 竖线
|(正常,没有出错) - 问号
?(PatternSyntaxException) - 星号
*(同上) - 加号
+(同上) - 左小括号或者右小括号
()(同上)
回复