You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

split("[^A-Za-z0-9]")作用查询:是拆分单词还是拆分单个字符?

split("[^A-Za-z0-9]")作用解答

核心结论

这个拆分逻辑是按照非字母数字的字符作为分隔符拆分字符串,最终得到的是单词/数字序列,而非单个字符。

原理说明

你给出的代码片段如下:

String func(String sen) {
  String[] var = sen.toLowerCase().split("[^A-Za-z0-9]");
  // 注:Java标准语法中字符串转小写方法为小驼峰写法toLowerCase()
...

拆分逻辑的规则完全由split方法入参的正则表达式决定,[^A-Za-z0-9]的含义如下:

  • 方括号[]代表正则的字符匹配组,单次匹配一个字符
  • 方括号开头的^代表反向匹配,即匹配「不在当前方括号定义的字符范围内」的字符
  • A-Za-z0-9定义的字符范围是所有大小写英文字母、0-9阿拉伯数字
    所以整个正则的作用是匹配所有「非英文字母、非数字」的字符(比如标点、空格、下划线、特殊符号等),split方法会把所有匹配到的这类字符当作拆分分隔符,分隔符中间的连续合法字符(字母/数字)就会被拆成数组的单个元素,也就是我们通常说的「单词」。

示例验证

假设输入字符串为"Hello,World! 2024@test",执行逻辑后的结果如下:

  1. 先转全小写得到"hello,world! 2024@test"
  2. 所有非字母数字的字符, ! 空格 @都会被当作分隔符
  3. 最终拆分得到的数组为["hello", "world", "2024", "test"]

补充说明

如果输入字符串中存在连续多个非字母数字字符,用当前正则拆分后会出现空字符串元素,比如输入"hello...world",拆分结果为["hello", "", "", "world"]。如果要避免这种情况,可以将正则修改为"[^A-Za-z0-9]+",加+代表匹配1个及以上连续的非字母数字字符,合并连续分隔符做一次拆分。

内容的提问来源于stack exchange,提问作者Ahcene Belhadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 20:12:02