java在处理字符串时,经常需要使用split方法来实现分割功能。
1、 首先查看其API定义
2、 /**
3、 *
4、 *
5、 *
6、 */
7、 }

8、 观察力强的读者可能已经发现
9、 split方法的第一个参数接收的是正则表达式(即前文提到的regex)。
10、 第二个参数limit可用于控制最终返回数组的最大长度。
11、 下面编写一个基础示例程序
12、 /**
13、 */
14、 }
15、 }
16、 }

17、 API含义已明确,预期输出应为:Hello world tang。
18、 实际运行后验证结果

19、 请思考:在此场景下程序将输出什么内容?
20、 对代码稍作调整

21、 输出结果对应的是版本一、版本二,还是版本三?
22、 执行程序观察实际效果
23、 v
24、 1
25、 |
26、 v
27、 2
28、 |
29、 v
30、 3

31、 结果令人意外,背后的原因到底是什么?
32、 若仍有疑惑,请重新查阅API文档中对首参数据类型的说明。
33、 正则表达式
34、 没错
35、 | 在正则语法中代表“逻辑或”,相关入门资料中对此已有详尽阐述。
36、 上述例子中,传入的正则模式仅为|,表面上只是单个竖线,但容易被忽视的是——它实际被解释为匹配任意位置的空分隔符。
37、 因此,|会把字符串在每个字符之间进行切割,从而生成大量空字符串与单字符片段。
38、 那么,怎样才能正确提取出v1、v2、v3这三个部分呢?
39、 若希望将|当作普通字面量字符处理,则必须对其进行转义。
40、 更新代码逻辑

41、 再次运行,确认输出是否达到预期目标
42、 v1
43、 v2
44、 v3
45、 输出完全符合预期
46、 OK

47、 是否有读者留意到这个|符号?它的设计灵感正来源于正则表达式。
48、 当面对多种不同分隔符共存的情形时
49、 修改当前程序实现方式

50、 运行测试,检查输出是否如愿呈现为v1 v2 v3。
51、 v1
52、 v2
53、 v3
54、 结果完全吻合预期
55、 Ok











