JAVA基础 - 如何使用split方法?

这篇具有很好参考价值的文章主要介绍了JAVA基础 - 如何使用split方法?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

在工作中一直使用split进行字串的分隔,但是始终没有认真研究过该方法,今天在使用该方法时遇到了一些问题,特进行学习记录。

遇到的问题

在使用“|”作为字串的分隔符的时候,分隔结果和预期不一样。

方法定义

// 从方法的实现上, 可以了解split的参数可以是正则表达式、任意字符、符号、数字、字符串等。

public String[] split(String regex) {
}

重点关注

因为split方法也支持正则表达式,而正则表达式存在特殊字符串的情况,这样就出现了上述问题,所以需要注意下表中的特殊字符。

特殊字符

特殊字符 说明
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \.。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n’ 匹配字符 ‘n’。‘\n’ 匹配换行符。序列 ‘\\’ 匹配 ‘\’,而 ‘\(’ 则匹配 ‘(’。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。

示例代码

// 1.如何使用|进行分隔?
String[] a = "a|b|c".split("\\|"); // 执行结果: [a, b, c]
// 2.如何使用.进行分隔?
String[] b = "a.b.c".split("\\."); // 执行结果: [a, b, c]
// 3.如何使用正则表达式进行分隔?
// 正则表达式:\d+表示一个或多个数字
String[] c = "a11b222c3333d".split("\\d+"); // 执行结果: [a, b, c, d]
// 4.如何使用多个不同的分隔符进行分隔?
// 分隔符可以有多个字符, 它们使用|分隔成左右两部分, 左右两边表达式之间是"或"的关系, 匹配左边或者右边.
String[] d = "a,b#c@d%%e".split(",|#|@|%%"); // 执行结果: [a, b, c, d, e]

高级进阶

// limit默认是0,regex表示正则表达式,limit用来参数控制分隔的次数。

public String[] split(String regex, int limit) {
}

String[] e = "a@b@c@d@e@".split("@", -1);  // 执行结果: [a, b, c, d, e, ]
String[] f = "a@b@c@d@e@".split("@", 0);   // 执行结果: [a, b, c, d, e]
String[] g = "a@b@c@d@e@".split("@", 1);   // 执行结果: [a@b@c@d@e@]
String[] h = "a@b@c@d@e@".split("@", 2);   // 执行结果: [a, b@c@d@e@]
String[] i = "a@b@c@d@e@".split("@", 100); // 执行结果: [a, b, c, d, e, ]
String[] j = "@@@".split("@", 100); // 执行结果: [, , , ]
String[] k = "bo:and:fo".split("o", 100); // 执行结果: [b, :and:f, ]
String[] l = "boo:and:foo".split("o", 100); // 执行结果: [b, , :and:f, , ]
String[] m = "booo:and:fooo".split("o", 0); // 执行结果: [b, , , :and:f]

// 1. 字符串开头出现分隔符,其余部分正常分隔,开头会分隔出一个空字符串。
// 2. 分隔符紧挨着,其余部分正常分隔,分隔符之间也会分隔出一个空字符串。
// 3. 字符串末尾出现分隔符,其余部分正常分隔,末尾会分隔出一个空字符串,是否丢弃末尾的空格需要判断limit的值:
A. 如果 limit < 0,匹配到多少次,就分隔多少次,数组可以是任何长度,结尾的空字符串不会丢弃;
B. 如果 limit = 0,匹配到多少次,就分隔多少次,数组可以是任何长度,并且结尾空字符串将被丢弃;
C. 如果 limit = 1,不进行分隔,直接将字串变成长度为1的数组;
D. 如果 limit > 1,(从左到右)最多分隔 n - 1 次,数组的长度将不会大于n, 结尾的空字符串不会丢弃。文章来源地址https://www.toymoban.com/news/detail-759404.html

到了这里,关于JAVA基础 - 如何使用split方法?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java入门基础知识

    JDK是Java工具开发包,包含了JVM(程序运行环境),核心类库(直接应用即可),开发工具(Javac,java,jdb,jhat…) JRE是Java运行环境,包含了JVM,核心类库,运行工具 JDK包含了JRE,JRE包含了jvm 全部小写(有特定含义的英文字符) class 表示一个类 整数类型 小数类型 字符串类型 :只用\\\"双引

    2024年02月09日
    浏览(73)
  • java基础知识

    java的数据结构有哪些? 线性结构:数组、链表、哈希表;队列、栈 非线性结构有:堆、树(二叉树、B树、B+树、红黑树) 图 常用的集合类有List集合,Set集合,Map集合,其中List集合与Set集合继承了Collection接口, List 有序可重复的集合接口,继承自Collection接口,表示元素按照插入顺

    2024年02月06日
    浏览(56)
  • java基础知识梳理

    虽然已经在实际工作中与java打交道5年之多,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。拉

    2024年02月04日
    浏览(65)
  • java基础知识二

    1.1、基本概念 类是具有相同属性和行为的一组对象的 集合 ,包含数据和操作,数据被称为 成员变量 ,操作被称为方法 对象是类的实例,即 对象 = 数据 + 行为 或者 对象 = 状态 + 操作 类抽象的、概念上的定义,对象是一个具体的、实际存在的个体,即一个实例 1.2、类的特

    2024年02月07日
    浏览(59)
  • Java基础知识篇02——Java基本语法

    定义: 就是用了保存数据的一个类型,一种数据类型,只能保存该类型数据值 作用: 只有了解数据类型,才能选择合适的类型存放数据,才能更好的利用计算机硬件资源(内存和硬盘等)。 不同的数据类型存放数据大小是不同的。 数据类型的使用方式就是用来声明一个变量,

    2024年03月15日
    浏览(66)
  • Java中常量基础知识

    什么是字面常量? 拿第一行输出语句来说,这行代码输出了 “hello” 这个字符串,无论何时何地运行程序,输出的这个字符串都不会变,这就是字面常量。 定义:常量即程序运行期间,固定不变的量称为常量。 package ht; public class ht1 {    public static void main(String[] args) {    

    2024年02月06日
    浏览(49)
  • Java ---基础知识& 期末复习

    1.Java是低级语言还是 高级语言    答:高级语言。 2.Java是面向对象的程序设计语言吗 答:是。 3. Java是编译型的计算机语言还是解释型的计算机语言。 答: 一种说法:Java是编译型的。因为所有的Java代码都是要编译的,.java不经过编译就无法执行。 另一种说法:Java是解释型

    2024年01月16日
    浏览(62)
  • Java GC基础知识

    在对象中添加一个 引用计数器 ,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可 能再被使用的 引用计数法的缺陷: 如果使用 引用计数法 , objA 和 objB 除互相引用外没有任何其他引用,但是无法被回收。

    2023年04月13日
    浏览(70)
  • java基础知识——25.异常

    这篇文章,我们来讲一下java的异常体系 目录 1.异常概述 2 java的异常继承体系 2.1 编译时异常 2.2 运行时异常 2.3 底层原理 2.4 异常的作用 3.异常的处理方式 3.1 JVM默认的处理方式 3.2 自己处理(捕获异常) 3.2.1自己处理的4个问题 3.2.2 异常中的常见方法 3.3 抛出处理 3.3.1 throws

    2024年02月01日
    浏览(54)
  • Java基础入门知识

    以下是学习java必备的知识 目录 前言 一、Java入门 二、基本数据类型与数组 标识符与 2. 基本数据类型 3. 类型转换运算 4. 运算符 5. 数组 6.控制结构(与c使用一致) 总结 Java语言是面向对象编程语言,编写的软件与平台无关。具有语法简单、面向对象、稳定、与平台无

    2024年02月16日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包