JAVA——String.split函数用法总结

本文深入讲解Java中split函数的使用方法,包括基本用法、转义字符处理、多个分割符和多种分割符的使用技巧,以及一些特殊情况的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天碰到一道输入格式题,大佬们都在用split,只有我在一点点模拟,羞愧羞愧,在这里把split函数边学习边整理一下,ORZ。

首先,split函数分为两种:

一是:split(regex),参数为要分隔的字符串或者正则表达式。

二是:ss.split(regex, limit)。此方法可以的第二个参数一般不太常用,但是这里依旧给出第二个参数代表的具体含义:  limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

以上两个函数的返回值均为String[].

(注意:一下所有代码,均是使用第一种方法)

总结split的四种常用的使用方法:

一、普遍方法;

给出样例代码:

package a;


public class a {

	public static void main(String[] args) {
		
		String s="我,是,一,个,教,师";
		String[] t=s.split(",");
		
		for(int i=0;i<t.length;i++)
		{
			System.out.print(t[i]);
		}

	}

}

//样例输出:我是一个教师

在这里可以看出split函数的基本用法,就是以括号里的特定表达式进行对字符串的分割,并将分割的每一个子串储存在String[]数组中。

二、转义字符的分割;

有一类特定的字符,在进行split的分割中需要在字符之间加"\\"或者是"[]",来对其进行转义。

这些字符有 | , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , \(咳咳,里面的逗号不是哈)等, 因它们是正则表达式中的一部分, 所以如果想用该字符本身, 这些字符需要进行转义才能表示它本身;

下面给出样例代码:

package a;


public class a {

	public static void main(String[] args) {
		
		String s="我*是*一*个*教*师";
//		String[] t=s.split("*");
//		
//		for(int i=0;i<t.length;i++)
//		{
//			System.out.println(t[i]);
//		}
		//方法出错,无法得到想要的结果,并且编译报错
		
		
		String[] t=s.split("\\*");
		for(int i=0;i<t.length;i++)
		{
			System.out.println(t[i]);
		}//正确方法

        String[] t=s.split("[*]");
		for(int i=0;i<t.length;i++)
		{
			System.out.println(t[i]);
		}//正确方法
		

	}

}

 转义字符必须经过转义之后才能进行分割!!!

三、同种多个分割符的分割

 

为了方便理解这里先给出一些样例,方便理解

package a;


public class a {

	public static void main(String[] args) {
		
		String s="***我*****是****一****个*****教******师******";

		
		
		String[] t=s.split("[*]");
		for(int i=0;i<t.length;i++)
		{
			System.out.println(t[i]);
		}
		

	}

}


//样例输出

//我
//
//
//
//
//是
//
//
//
//一
//
//
//
//个
//
//
//
//
//教
//
//
//
//
//
//师

从样例可以看出,当有多个分隔符连接在一起时,split函数只会忽略掉第一个分隔符(开头一个也不忽略,直接全部变为null存在字符串数组t中),而其他的全部当做空字符串处理,对应输出中的空行。

下面给出解决方法;

package ceshi;

public class Main {
	public static void main(String[]  args)
	{
		String s="******我******是*****个****教****师";
		String[]  t=s.split("\\*+");
		
		System.out.println("输出测案例 --------");
		for(int i=0;i<t.length;i++)
		{
			System.out.println(t[i]);
		}
	}

}


//样例输出

//输出测案例 --------
//
//我
//是
//个
//教
//师

其中的‘+’表示多次匹配的意思,所以就可以消除中间许多匹配符号的问题,但是注意开头的空行,这个是无法避免,但具体我也不是很清楚,希望懂得可以指点一下。下面再给出一个案例加深理解。

package ceshi;

public class Main {
	public static void main(String[]  args)
	{
		String s="a     b                 c             d";
		String[]  t=s.split("\\s+");
		
		System.out.println("输出测案例 --------");
		for(int i=0;i<t.length;i++)
		{
			System.out.println(t[i]);
		}
	}

}


//输出测案例 --------
//a
//b
//c
//d

其中\s代表的是空格符,这个代码可用于筛选其中字符串的空格个(再次注意,如果开头有分隔符,第一行输出的是空行也就相当于null)。

四、多种分割符的分割

在很多种情况下,一种分割符是无法满足我们的要求的,这就要求我们一次根据多种分隔符进行分割。

下面给出样例代码:

package ceshi;

public class Main {
	public static void main(String[]  args)
	{
		String s="1+2-2*2%4+6/5=3";
		String[]  t=s.split("[+,0,*,%,/,=,-]");
		
		System.out.println("输出测案例 --------");
		for(int i=0;i<t.length;i++)
		{
			System.out.println(t[i]);
		}
	}

}


//输出测案例 --------
//1
//2
//2
//2
//4
//6
//5
//3

在进行多种符号分割时需要用到[]符号或者 | 分隔“|”分隔实例,这篇博客详细介绍了‘|’在这里不多提。【】本身相当于转义,所以当【】中含有转义字符时不需要再加 \ 进行转义,这也是他的方便之处。

如果需要进行多次匹配的话在【】外加‘+‘即可。下面同样给出例子。

package ceshi;

public class Main {
	public static void main(String[]  args)
	{
		String s="1+++++2-2*2%4+6/5=3";
		String[]  t=s.split("[+,0,*,%,/,=,-]+");
		
		System.out.println("输出测案例 --------");
		for(int i=0;i<t.length;i++)
		{
			System.out.println(t[i]);
		}
	}

}


//输出测案例 --------
//1
//2
//2
//2
//4
//6
//5
//3


 

package ceshi;

public class Main {
	public static void main(String[]  args)
	{
		String s="abccccccdr    fdacccccsfdgsa";
		String[]  t=s.split("[\\s,c]+");
		
		System.out.println("输出测案例 --------");
		for(int i=0;i<t.length;i++)
		{
			System.out.println(t[i]);
		}
	}

}

//输出测案例 --------
//ab
//dr
//fda
//sfdgsa



 

五、特殊情况

 

本来写到这里想结束这篇博客的,但是突然在网上看到一种很有意思的情况,在这里给大家分享一下,注意以上四种中也不是非常全面,更多的需要自己大胆去写去揣摩。

下面给出样例代码以及其注释:

package ceshi;

public class Main {
	public static void main(String[]  args)
	{
		String s="abccccccdd\\gsa";
		String[]  t=s.split("\\\\");
		
		System.out.println("输出测案例 --------");
		for(int i=0;i<t.length;i++)
		{
			System.out.println(t[i]);
		}
	}

}

//输出测案例 --------
//abccccccdd
//gsa




 

以后如果还有新的发现,会继续更新,也希望有干货的大佬,可以多多分享指点,

### Java 中 `String.split()` 方法详解 #### 基本概念 `split()` 是 Java 的 `String` 类中的一个重要方法,用于按照指定的规则将字符串分割成多个子串,并返回这些子串组成的数组。此方法支持两种重载形式: - `public String[] split(String regex)` - `public String[] split(String regex, int limit)`[^1] #### 参数说明 - **regex**: 表达式模式,通常是一个正则表达式,用来匹配分隔符。 - **limit**: 可选参数,表示最大分割次数;如果该为负数,则不限制分割次数;如果等于0,则会去除结尾处所有的空字符串。 #### 实际应用案例 考虑几个具体的例子来展示如何使用这个函数: ```java // 示例一:简单字符作为分隔符 String sentence = "你好,世界"; String parts[] = sentence.split(","); for (String part : parts){ System.out.println(part); } ``` 上述代码将会把句子按逗号分开并打印每一部分[^4]。 再来看另一个更复杂的场景——处理连续出现的分隔符情况下的行为: ```java // 示例二:处理多重复合分隔符的情况 String complexStr = "cs::ab::"; String resultArray[] = complexStr.split(":"); System.out.println(java.util.Arrays.toString(resultArray)); ``` 这段程序展示了当输入包含多个相邻冒号时的结果[^5]。 得注意的是,在某些情况下,`split()` 函数确实依赖于内部实现的正则引擎来进行模式匹配工作,因此对于非常规或复杂模式来说可能会影响效率[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值