杰瑞科技汇

Java split空格分割为何失效?

在 Java 中,可以使用 String.split() 方法以空格分割字符串,以下是几种常见情况的示例和说明:

Java split空格分割为何失效?-图1
(图片来源网络,侵删)

基本用法:按单个空格分割

String str = "hello world java";
String[] parts = str.split(" "); // 使用单个空格作为分隔符
for (String part : parts) {
    System.out.println(part);
}

输出:

hello
world
java

处理连续空格(多个空格)

如果字符串中有连续空格,直接使用 split(" ") 会得到空字符串()。

String str = "hello   world java"; // 三个连续空格
String[] parts = str.split(" ");
for (String part : parts) {
    System.out.println("[" + part + "]"); // 用方括号标记空字符串
}

输出:

[hello]
[]
[]
[world]
[java]

解决方案:使用 split("\\s+")

\s 匹配任何空白字符(空格、制表符、换行等), 表示一个或多个:

Java split空格分割为何失效?-图2
(图片来源网络,侵删)
String str = "hello   world java";
String[] parts = str.split("\\s+"); // 匹配一个或多个空白字符
for (String part : parts) {
    System.out.println(part);
}

输出:

hello
world
java

去除首尾空格后再分割

如果字符串首尾有空格,可以先使用 trim() 去除:

String str = "  hello world java  ";
String[] parts = str.trim().split("\\s+");
for (String part : parts) {
    System.out.println(part);
}

输出:

hello
world
java

使用 StringTokenizer(旧方法)

Java 早期版本中,StringTokenizer 也用于分割字符串(但已不推荐,功能有限):

Java split空格分割为何失效?-图3
(图片来源网络,侵删)
StringTokenizer tokenizer = new StringTokenizer("hello world java");
while (tokenizer.hasMoreTokens()) {
    System.out.println(tokenizer.nextToken());
}

输出:

hello
world
java

正则表达式注意事项

  • split(" "):仅按单个空格分割。
  • split("\\s+"):按一个或多个空白字符分割(推荐)。
  • split("\\s"):按每个空白字符分割(包括单个空格、制表符等)。

需求 推荐方法 示例
按单个空格分割 split(" ") "a b".split(" ")["a", "b"]
按连续空格分割 split("\\s+") "a b".split("\\s+")["a", "b"]
去除首尾空格后分割 trim().split("\\s+") " a b ".trim().split("\\s+")["a", "b"]

根据实际需求选择合适的方法!

分享:
扫描分享到社交APP
上一篇
下一篇