按特定分隔符分割字符串(最常见)
这是最普遍的需求,比如将 "apple,banana,orange" 分割成 ["apple", "banana", "orange"]。

方法:使用 String.split()
String 类的 split(String regex) 方法可以根据给定的正则表达式将字符串拆分为一个字符串数组。
语法:
public String[] split(String regex)
注意: regex 参数是正则表达式,而不仅仅是普通字符串,如果分隔符是正则表达式中的特殊字符(如 ^ \ [ ] ),你需要对其进行转义(在前面加 \),或者在 Java 中使用 \\ 来表示一个 \。
示例 1:使用逗号作为分隔符
这是最简单的例子,逗号 在正则表达式里不是特殊字符,所以直接使用即可。

public class StringToArrayExample {
public static void main(String[] args) {
String str = "apple,banana,orange,grape";
String delimiter = ","; // 分隔符
// 使用 split 方法分割字符串
String[] strArray = str.split(delimiter);
// 打印结果
System.out.println("原始字符串: " + str);
System.out.println("分割后的数组:");
for (String fruit : strArray) {
System.out.println(fruit);
}
}
}
输出:
原始字符串: apple,banana,orange,grape
分割后的数组:
apple
banana
orange
grape
示例 2:使用句点()作为分隔符(需要转义)
句点 在正则表达式里表示“任意字符”,所以必须使用 \\. 来进行转义。
public class StringToArrayExample {
public static void main(String[] args) {
String str = "www.example.com";
String delimiter = "\\."; // 必须对 . 进行转义
String[] strArray = str.split(delimiter);
System.out.println("原始字符串: " + str);
System.out.println("分割后的数组:");
for (String part : strArray) {
System.out.println(part);
}
}
}
输出:
原始字符串: www.example.com
分割后的数组:
www
example
com
示例 3:使用竖线()作为分隔符(需要转义)
竖线 在正则表达式里表示“或”,所以也必须转义。

public class StringToArrayExample {
public static void main(String[] args) {
String str = "apple|banana|orange";
String delimiter = "\\|"; // 必须对 | 进行转义
String[] strArray = str.split(delimiter);
System.out.println("原始字符串: " + str);
System.out.println("分割后的数组:");
for (String fruit : strArray) {
System.out.println(fruit);
}
}
}
输出:
原始字符串: apple|banana|orange
分割后的数组:
apple
banana
orange
示例 4:处理多个连续的分隔符
默认情况下,split() 方法会认为多个连续的分隔符之间有一个空的字符串,如果你希望忽略这些空字符串,可以使用 split() 的重载方法 split(String regex, int limit),并将 limit 设为负数。
public class StringToArrayExample {
public static void main(String[] args) {
String str = "apple,,banana,,,orange";
String delimiter = ",";
// 不处理连续分隔符,会包含空字符串
String[] strArrayWithEmpty = str.split(delimiter);
System.out.println("不处理连续分隔符:");
for (String s : strArrayWithEmpty) {
System.out.println("[" + s + "]"); // 用 [] 括起来方便看空字符串
}
System.out.println("--------------------");
// 处理连续分隔符,忽略空字符串
// limit 参数为负数表示尽可能多地分割,并忽略尾部的空字符串
String[] strArrayWithoutEmpty = str.split(delimiter, -1);
// 对于忽略中间的空字符串,更简单的方法是使用正则表达式中的 +
String[] strArrayClean = str.split(delimiter + "+"); // + 表示一个或多个
System.out.println("使用 split(',+') 处理连续分隔符:");
for (String s : strArrayClean) {
System.out.println("[" + s + "]");
}
}
}
输出:
不处理连续分隔符:
[apple]
[]
[banana]
[]
[]
[orange]
--------------------
使用 split(',+') 处理连续分隔符:
[apple]
[banana]
[orange]
将字符串的每个字符都作为数组的一个元素
如果你想把 "hello" 变成 ["h", "e", "l", "l", "o"],有几种方法。
方法 1:使用 toCharArray() 和 Arrays.toString() (推荐)
这是最直接、最高效的方法。
import java.util.Arrays;
public class StringToCharArrayExample {
public static void main(String[] args) {
String str = "hello world";
// 1. 将字符串转换为 char 数组
char[] charArray = str.toCharArray();
// 2. 如果需要 String 数组,可以遍历 char 数组来创建
String[] strArray = new String[charArray.length];
for (int i = 0; i < charArray.length; i++) {
strArray[i] = String.valueOf(charArray[i]);
}
System.out.println("原始字符串: " + str);
System.out.println("字符数组: " + Arrays.toString(charArray)); // 直接打印 char 数组
System.out.println("字符串数组: " + Arrays.toString(strArray)); // 打印 String 数组
}
}
输出:
原始字符串: hello world
字符数组: [h, e, l, l, o, , w, o, r, l, d]
字符串数组: [h, e, l, l, o, , w, o, r, l, d]
方法 2:使用 Java 8 Stream API (现代且简洁)
如果你使用的是 Java 8 或更高版本,可以使用 Stream API 来实现,代码非常优雅。
import java.util.Arrays;
public class StringToStreamArrayExample {
public static void main(String[] args) {
String str = "hello world";
// 使用 Stream 将每个字符映射为 String,然后收集到数组中
String[] strArray = str.chars() // 获取 IntStream (字符的 ASCII 码)
.mapToObj(c -> String.valueOf((char) c)) // 将每个 int 转换为 String
.toArray(); // 收集到数组
System.out.println("原始字符串: " + str);
System.out.println("字符串数组: " + Arrays.toString(strArray));
}
}
输出:
原始字符串: hello world
字符串数组: [h, e, l, l, o, , w, o, r, l, d]
将整个字符串作为数组的唯一一个元素
这种需求比较少见,但有时你可能需要一个只包含原始字符串的数组。
方法:直接使用花括号 创建
public class StringToSingleElementArray {
public static void main(String[] args) {
String str = "This is the whole string";
// 创建一个只有一个元素的数组
String[] strArray = new String[]{str};
// 或者更简洁的写法
String[] strArray2 = {str};
System.out.println("原始字符串: " + str);
System.out.println("单元素数组: " + Arrays.toString(strArray));
System.out.println("单元素数组2: " + Arrays.toString(strArray2));
}
}
输出:
原始字符串: This is the whole string
单元素数组: [This is the whole string]
单元素数组2: [This is the whole string]
| 场景 | 推荐方法 | 示例 |
|---|---|---|
| 按分隔符分割 | String.split(regex) |
str.split(",") |
| 每个字符成元素 | toCharArray() + 遍历 或 Java 8 Stream |
str.toCharArray() 或 str.chars().mapToObj(...).toArray() |
| 整个字符串为元素 | 使用花括号 创建 | new String[]{str} |
请根据你的具体需求选择最合适的方法,对于绝大多数情况,String.split() 是
