Java String.split() 方法

2025年9月1日 | 阅读 5 分钟

split() 方法定义在 String 类中。它围绕给定正则表达式的匹配来拆分此字符串。

此方法的工作方式是使用给定的表达式和零的 limit 参数调用双参数 split 方法。因此,尾部的空字符串不会包含在生成的数组中。

语法

参数:该方法接受一个分隔正则表达式作为参数。

返回值:该方法返回一个字符串,该字符串是通过围绕给定正则表达式的匹配来拆分此字符串而计算得出的。

异常:如果正则表达式的语法无效,则该方法会抛出 PatternSyntaxException。

split() 方法还有另一个签名。

limit:数组中字符串数量的限制。如果为零,它将返回所有匹配正则表达式的字符串。

内部实现

示例 1:Java String.split() 方法

给出的示例仅返回字符串中的单词总数(不包括空格)。它还包括特殊字符。

示例

编译并运行

输出

java
string
split
method
by
TpointTech

示例 2:Java String.split() 方法

示例

编译并运行

输出

returning words:
welcome 
to 
split 
world
returning words:
welcome to split world
returning words:
welcome 
to split world

示例 3:Java String.split() 方法

在这里,我们将 split limit 作为第二个参数传递给此函数。这限制了拆分后字符串的数量。

示例

编译并运行

输出

Returning words:
Tpoin
Tech
Split array length: 2

优点

  • 易于使用:该方法简单直观——只需提供一个分隔符,它就会将字符串拆分成一个数组。
  • 灵活的分隔符(正则表达式支持):它使用正则表达式,因此您可以根据复杂的模式进行拆分(例如,空格、多个符号)。
  • 内置且高效:无需额外的库——它是核心 Java (java.lang.String) 的一部分,并且经过优化以提高性能。
  • 支持 limit 参数:我们可以使用 limit 参数控制拆分的数量,如果需要,这有助于保持字符串的某些部分 intact。

缺点

  • 正则表达式的复杂性:分隔符被视为正则表达式,这可能会让初学者感到困惑(例如,用 . 分隔需要 "\\.")。
  • 创建额外的空字符串:当使用连续的分隔符拆分字符串时,它可能会在结果数组中产生空字符串。
  • 对高级解析的控制较少:不适合复杂的标记化(例如,带引号的字符串、转义字符)——您可能需要自定义解析器或 StringTokenizer。
  • 对大字符串的内存效率不高:它每次都返回一个新的数组,因此对于非常大的文本,可能会增加内存使用。

Java String.split() 方法选择题

Q1. String split() 方法的正确返回类型是以下哪一项?

  1. String
  2. String[]
  3. 列表
  4. char[]

答案:B)

解释:split() 方法在围绕给定正则表达式的匹配拆分字符串后,返回一个 String 对象数组,而不是 List 或单个 String。


Q2. 如果传递给 split() 的正则表达式不匹配字符串的任何部分,会发生什么?

  1. 返回 null
  2. 它会抛出异常
  3. 返回包含原始字符串的数组
  4. 返回一个空数组

答案:C)

解释:split() 方法通过返回一个以原始字符串作为其单个元素的数组来确保没有数据丢失,如果模式在任何地方都不匹配。


Q3. "apple, banana, orange".split(",").length 会返回什么?

  1. 2
  2. 1
  3. 3
  4. 0

答案:C)

解释:长度为三,因为 split(",") 在每个逗号处拆分字符串后会创建一个包含 ["apple", "banana", 和 "orange"] 的数组。


Q4. 应该使用哪个正则表达式来按任何空白字符拆分字符串?

  1. " "
  2. "\w"
  3. "\s+"
  4. "."

答案:C)

解释:使用 split("\s+") 时,单词可以由空格、制表符或多个空格分隔,因为正则表达式 \s+ 匹配一个或多个空白字符。


Q5. 如果 split(regex, limit) 中的 limit 参数为负数,会发生什么?

  1. 会抛出错误
  2. 它的作用类似于 limit = 0
  3. 它会尽可能多次地拆分
  4. 返回一个空数组

答案:C)

解释:如果提供了负数 limit,String.split() 会尽可能多地应用模式并将尾部的空字符串包含在输出中。