首页
首页 教程 派聪明
  • 首页
  • 教程
  • 派聪明
  • 登录
登录技术派畅享更多权益

用户名密码登录

其他登录:
绑定星球,畅享VIP服务

微信扫码/长按识别登录

扫码关注登录
有效期五分钟 👉 手动刷新

登录即同意 用户协议 和 隐私政策

绑定知识星球,畅享 VIP 尊享服务!

戳我了解如何获取星球编号,新窗口打开

添加二哥微信 qing_gee 加速审核

记得备注 星球编号
账号迁移
请输入您之前账号的用户名和密码
通过知识星球授权进行账号绑定和迁移
去绑定
1
教程简介
更新时间: 2023年02月22日
限免
2
Java简介,什么是 Java?
更新时间: 2023年02月22日
限免
3
安装Java开发工具包JDK
更新时间: 2023年02月22日
限免
4
安装集成开发环境Intellij IDEA
更新时间: 2023年02月22日
限免
5
编写第一个Java程序:Hello World
更新时间: 2023年02月22日
限免
6
关键字和保留字
更新时间: 2023年04月23日
限免
7
Java 注释
更新时间: 2023年04月23日
限免
8
Java 数据类型
更新时间: 2023年04月24日
限免
9
Java 数据类型转换
更新时间: 2023年04月24日
限免
10
Java 基本数据类型缓存池
更新时间: 2023年04月24日
限免
11
Java 运算符
更新时间: 2023年04月24日
限免
12
Java 流程控制语句
更新时间: 2023年04月24日
限免
13
掌握 Java 数组
更新时间: 2023年04月25日
限免
14
掌握 Java 二维数组
更新时间: 2023年04月25日
限免
15
打印 Java 数组
更新时间: 2023年04月25日
限免
16
解读 String 源码
更新时间: 2023年04月25日
限免
17
String 为什么不可变
更新时间: 2023年04月25日
限免
18
深入理解 Java 字符串常量池
更新时间: 2023年04月25日
限免
19
详解 String.intern 方法
更新时间: 2023年04月25日
限免
20
StringBuilder 和 StringBuffer
更新时间: 2023年04月25日
限免
21
判断字符串相等
更新时间: 2023年04月25日
限免
22
字符串拼接
更新时间: 2023年04月25日
限免
23
字符串拆分
更新时间: 2023年04月25日
限免
关注公众号
原创
如何在Java中拆分字符串:详解String类的split()方法

4.11 String拆分

“哥,我感觉字符串拆分没什么可讲的呀,直接上 String 类的 split() 方法不就可以了!”三妹毫不客气地说。

“假如你真的这么觉得,那可要注意了,事情远没这么简单。”我微笑着说。

假如现在有这样一串字符序列“沉默王二,一枚有趣的程序员”,需要按照中文逗号“,”进行拆分,这意味着第一串字符序列为逗号前面的“沉默王二”,第二串字符序列为逗号后面的“一枚有趣的程序员”。

“这不等于没说吗?哥!”还没等我说,三妹就打断了我。

“别着急嘛,等哥说完。”我依然保持着微笑继续说,“在拆分之前,要先进行检查,判断一下这串字符是否包含逗号,否则应该抛出异常。”

public class Test {
    public static void main(String[] args) {
        String cmower = "沉默王二,一枚有趣的程序员";
        if (cmower.contains(",")) {
            String [] parts = cmower.split(",");
            System.out.println("第一部分:" + parts[0] +" 第二部分:" + parts[1]);
        } else {
            throw new IllegalArgumentException("当前字符串没有包含逗号");
        }
    }
}

“三妹你看,这段代码挺严谨的吧?”我说,“来看一下程序的输出结果。”

第一部分:沉默王二 第二部分:一枚有趣的程序员

“的确和预期完全一致。”三妹说。

“这是建立在字符串是确定的情况下,最重要的是分隔符是确定的。否则,麻烦就来了。”我说,“大约有 12 种英文特殊符号,如果直接拿这些特殊符号替换上面代码中的分隔符(中文逗号),这段程序在运行的时候就会出现以下提到的错误。”

  • 反斜杠 \(ArrayIndexOutOfBoundsException)
  • 插入符号 ^(同上)
  • 美元符号 $(同上)
  • 逗点 .(同上)
  • 竖线 |(正常,没有出错)
  • 问号 ?(PatternSyntaxException)
  • 星号 *(同上)
  • 加号 +(同上)
  • 左小括号或者右小括号 ()(同上)
  • 左方括号或者右方括号 [](同上)
  • 左大括号或者右大括号 {}(同上)

“那遇到这些特殊符号该怎么办呢?”三妹问。

“用正则表达式。”我说,“正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。”

我在 GitHub 上找打了一个开源的正则表达式学习文档,非常详细。一开始写正则表达式的时候难免会感觉到非常生疏,你可以查看一下这份文档。记不住没关系,遇到就查。

https://github.com/cdoco/learn-regex-zh

除了这份文档,还有一份:

https://github.com/cdoco/common-regex

作者收集了一些在平时项目开发中经常用到的正则表达式,可以直接拿来用。

“哥,你真周到。”三妹笑着说。

“好了,来用英文逗点 . 替换一下分隔符。”我说。

String cmower = "沉默王二.一枚有趣的程序员";
if (cmower.contains(".")) {
    String [] parts = cmower.split("\\.");
    System.out.println("第一部分:" + parts[0] +" 第二部分:" + parts[1]);
}

由于英文逗点属于特殊符号,所以在使用 split() 方法的时候,就需要使用正则表达式 \\. 而不能直接使用 .。

“为什么用两个反斜杠呢?”三妹问。

“因为反斜杠本身就是一个特殊字符,需要用反斜杠来转义。”我说。

当然了,你也可以使用 [] 来包裹住英文逗点“.”,[] 也是一个正则表达式,用来匹配方括号中包含的任意字符。

cmower.split("[.]");

除此之外, 还可以使用 Pattern 类的

登录之后即可阅读全文
该文档仅「二哥编程星球」的VIP用户可见

二哥编程星球的内容包括:

1. 实战项目: 派聪明RAG、校招派Agent、PmHub、技术派、MYDB 等

2. 面试指南: 40 万+字面试求职攻略+面渣逆袭

3. 专属问答: 向二哥 1v1 发起提问,内容不限于 offer 选择、学习路线、职业规划等

4. 简历修改: 提供简历修改服务,附赠星球 5000+优质简历模板可供参考


二哥的星球

》步骤①:微信扫描上方二维码,点击「加入知识星球」按钮

》步骤②:访问星球置顶帖球友必看: https://t.zsxq.com/11rEo9Pdu,获取项目的源码权限和教程地址

已加入星球,绑定星球编号
删除提醒

确定删除《如何在Java中拆分字符串:详解String类的split()方法》吗

1人已点赞

回复

目录

分享文章
分享二维码