Java 的字符串类 String 自带了一个 split 方法可以拆分字符串。
函数原型:
String[] split(String regex);
String[] split(String regex, int limit);
第一个参数regex
是正则表达式,第2个split函数的 limit
参数代表最多拆分成几个字符串。limit
小于等于0时代表尽可能的拆分。
下面用一个表格快速说明下:
字符串 | regex | limit | 拆分结果 |
---|---|---|---|
你好,世界 |
, |
0 | 你好 、 世界 |
你好,中国,世界 |
我们 |
0 | 你好,中国,世界 |
你好,中国,世界 |
中国 |
0 | 你好, 、,世界 |
你好,中国,世界 |
, |
0 | 你好 、中国 、世界 |
你好,中国,世界 |
, |
2 | 你好 、中国,世界 |
你好.中国 |
. |
0 | 拆分结果为空 |
你好.中国 |
\\. |
0 | 你好 、中国 |
示例1:
public class StringTest {
public static void main(String[] args) {
String data = "你好,世界";
String[] splitResult = data.split(",");
System.out.println(splitResult.length);
System.out.println(splitResult[0]);
System.out.println(splitResult[1]);
}
}
执行结果:
2
你好
世界
示例2:
public class StringTest {
public static void main(String[] args) {
print("你好,中国,世界".split("我们")); // {"你好,中国,世界"}
print("你好,中国,世界".split("中国")); // {"你好,", ",世界"}
print("你好,中国,世界".split(",")); // {"你好", "中国", "世界"}
print("你好,中国,世界".split(",", 2)); // {"你好", "中国,世界"}
}
static void print(String[] arr) {
if (arr == null || arr.length == 0) {
System.out.println("{}");
return;
}
String s = "{";
for (int i=0; i < arr.length-1; i++) {
s = String.format("%s\"%s\", ", s, arr[i]);
}
s = String.format("%s\"%s\"}", s, arr[arr.length-1]);
System.out.println(s);
}
}
执行结果:
{"你好,中国,世界"}
{"你好,", ",世界"}
{"你好", "中国", "世界"}
{"你好", "中国,世界"}
示例3
因为split 的第一个参数 regex 是正则表达式,所以一定要注意正则表达式的关键词是不能直接用来拆分字符串的。 例如在正则表达式中.
是一个关键字符,要想将字符串按照.
拆分,需要写成\\.
。
public class StringTest {
public static void main(String[] args) {
print("你好.中国".split(".")); // {}
print("你好.中国".split("\\.")); // {"你好", "中国"}
print("你好.中国.世界".split("\\.")); // {"你好", "中国", "世界"}
print("你好.中国.世界".split("\\.中国")); // {"你好", ".世界"}
}
static void print(String[] arr) {
if (arr == null || arr.length == 0) {
System.out.println("{}");
return;
}
String s = "{";
for (int i=0; i < arr.length-1; i++) {
s = String.format("%s\"%s\", ", s, arr[i]);
}
s = String.format("%s\"%s\"}", s, arr[arr.length-1]);
System.out.println(s);
}
}
执行结果:
{}
{"你好", "中国"}
{"你好", "中国", "世界"}
{"你好", ".世界"}