【Java】String类的split(String regex)用法全解

  • split(String regex)与split(String regex, int limit)中对Limit的处理:
  1. stringInstance.split(String regex),分割会进行完全,分割形成的字符串数组长度无限制,对于末尾分隔符全部忽略,相当于stringInstance.split(String regex, 0);

  2. stringInstance.split(String regex, int limit),limit的处理分为3种:

    a. n > 0时,分割会进行 (n - 1) 次,分割形成的字符串数组长度不大于n
    b. n < 0时,分割会进行完全,分割形成的字符串数组长度无限制
    b. n == 0时,分割会进行完全,分割形成的字符串数组长度无限制,对于末尾分隔符全部忽略

以字符串 "boo:and:foo"为例:

RegexLimitResult
:2{ “boo”, “and:foo” }}
:5{ “boo”, “and”, “foo” }}
:-2{ “boo”, “and”, “foo” }}
o5{ “b”, “”, “:and:f”, “”, “” }}
o-2{ “b”, “”, “:and:f”, “”, “” }}
o5{ “b”, “”, “:and:f” }}
  • 对正则表达式的处理大致分为以下四种:
  1. 普通字符匹配

  2. 双引号匹配需要1个转义字符

  3. 正则表达式字符匹配需要2个转义字符

    总结一下java正则表达式需要转义的字符: ( [ { } ] ) . + - * ^ ? / | \ $

    即:三种括号,加减乘除幂,小数点,dollar,?/| \

  4. 转义字符匹配需要3个转义字符

public class TestRegexMatching {

	public static void main(String[] args) {
		System.out.println(":a\"b::c-d\\ef|g::\n");
		String[] s0 = ":a\"b::c-d\\ef|g::".split(":", -1); // 1-1. 普通字符匹配 (不忽略任何一个分隔符)
		for (int i = 0; i < s0.length; i++)
			System.out.println(i + ": " + s0[i]);

		System.out.println();
		String[] s1 = ":a\"b::c-d\\ef|g::".split(":", 4); // 1-2. 普通字符匹配(分割形成的字符串数组长度为4)
		for (int i = 0; i < s1.length; i++)
			System.out.println(i + ": " + s1[i]);

		System.out.println();
		String[] s2 = ":a\"b::c-d\\ef|g::".split(":|\""); // 2. 双引号匹配需要一个转义字符\ (末尾分隔符全部忽略)
		for (int i = 0; i < s2.length; i++)
			System.out.println(i + ": " + s2[i]);

		System.out.println();
		String[] s3 = ":a\"b::c-d\\ef|g::".split(":|\\-"); // 3. 正则表达式字符匹配需要两个转义字符\\
		for (int i = 0; i < s3.length; i++)
			System.out.println(i + ": " + s3[i]);

		System.out.println();
		String[] s5 = ":a\"b::c-d\\ef|g::".split("\\|");
		for (int i = 0; i < s5.length; i++)
			System.out.println(i + ": " + s5[i]);

		System.out.println();
		String[] s4 = ":a\"b:c-d\\ef|g::".split("\\\\", -1); // 4. 转义字符匹配需要三个转义字符\\\
		for (int i = 0; i < s4.length; i++)
			System.out.println(i + ": " + s4[i]);

	}

}

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值