java 空字符串 split,Java的String的split方法忽略空字符串

It occured to me today the behavior of java String.split() is very strange.

Actually I want to split a string "aa,bb,cc,dd,,,ee" to array by .split(",") that gives me a String array ["aa","bb","cc","dd","","","ee"] of length 7.

But when I try to split a String "aa,bb,cc,dd,,,," to array this gives me a array of length 4 means only ["aa","bb","cc","dd"] rejecting all next blank Strings.

I want a procedure that splits a String like "aa,bb,cc,dd,,,," to array ["aa","bb","cc","dd","","",""].

Is this possible with java.lang.String api? Thanks in advance.

解决方案

"aa,bb,cc,dd,,,,".split(",", -1)

When String.split(String regex) is called, it is called with limit = 0, which will remove all trailing empty strings in the array (in most cases, see below).

The actual behavior of String.split(String regex) is quite confusing:

Splitting an empty string will result in an array of length 1. Empty string split will always result in length 1 array containing the empty string.

Splitting ";" or ";;;" with regex being ";" will result in an empty array. Non-empty string split will result in all trailing empty strings in the array removed.

The behavior above can be observed from at least Java 5 to Java 8.

There was an attempt to change the behavior to return an empty array when splitting an empty string in JDK-6559590. However, it was soon reverted in JDK-8028321 when it causes regression in various places. The change never makes it into the initial Java 8 release.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java中的String类有一个split()方法,可以用来将字符串按照指定的分隔符进行分割。使用方法如下: str.split(regex) 其中,str是要分割的字符串,regex是分隔符的正则表达式。例如: String str = "apple,banana,orange"; String[] fruits = str.split(","); 这样,fruits数组就会包含字符串"apple","banana","orange"。 注意:如果regex是一个字符串(""),那么将会把字符串分割成每个字符一个元素的数组。 ### 回答2: Java中的String类提供了一个分割字符串方法——split。通过split方法,我们可以把一个字符串按照指定的分隔符进行分割,得到一个字符串数组。 split方法的基本语法是:String[] split(String regex)。其中,regex表示分隔符的正则表达式,可以是一个字符串或者一个正则表达式。这个方法的返回值是一个字符串数组,包含了使用指定分隔符分割后的所有字符串。 在使用split方法时,需要注意以下几点: 1.分隔符可以是任意的字符或字符串,包括白字符、数字、字母、符号等等。 2.如果分隔符是一个字符串,需要用反斜杠“\”进行转义,例如split("\\|")表示以竖线“|”为分隔符进行分割。 3.如果分隔符是一个正则表达式,需要使用正则表达式的语法规则进行书写,例如split("\\s+")表示以一个或多个格为分隔符进行分割。 4.如果原始字符串中不存在分隔符,则返回一个只包含原始字符串字符串数组。 5.如果原始字符串以分隔符结尾,则返回一个包含字符串的最后一个元素。 6.如果连续使用分隔符,则返回一个包含字符串的元素。 总之,Javasplit方法是一个简单实用的字符串分割工具,能够方便地对字符串进行分割操作。我们在实际编程中可以根据需要选择合适的分隔符和正则表达式,来实现字符串的有效拆分。 ### 回答3: Java中的String类提供了split()方法,用于在字符串中搜索特定的字串,并根据搜索结果分离原始字符串字符串数组。这是Java语言中一种非常有用的字符串操作技术,可以使处理很大的字符串变得更加容易。在这里,我将详细介绍split()方法的一些使用场景以及它的一些基本用法。 split()方法需要一个参数作为分割 字符或正则表达式(Regex)。如果该参数为,则字符串不会被分割,并返回长度为1的字符串数组。在指定分隔符时,该字符串被解释成一个正则表达式。所以,如果使用字符串 .(点)作为分隔符,需要使用反斜杠(\)进行转义。例如,以下代码将使用点作为分隔符将字符串分割: String str = "apple,banana,cake"; String[] arrOfStr = str.split("\\."); 在这个例子中,字符串被分割成3个字符串"apple","banana"和"cake",因为逗号(,)是分割字符串的标记。 Java split()方法中传递正则表达式 \s (一个格字符)作为分隔符时,此方法将在所有格字符处将字符串分割,包括格,换行符(\n)和制表符(\t)。 String str = "This is an example"; String[] arrOfStr = str.split("\\s"); 在这个例子中,字符串被分割为4个字符串,即"This","is","an"和"example"。在这个例子中,由于格字符是分隔符,所以全部都被忽视了。 Java split()方法还可以使用正则表达式来分割字符串。正则表达式语言是用于匹配字符串语言的一个标准技术。在Java中,可以轻松地使用正则表达式来处理字符串。例如,以下代码使用正则表达式将字符串分割成三个字符串String str = "Java split() method \n examples!"; String[] arrOfStr = str.split("\\W+"); 在这个例子中,正则表达式 \W+指定非字母数字(例如格,标点符号)作为分隔符。所以,字符串被分割成3部分:Javasplit()method和examples!。 总之,在Java中使用split()方法分割字符串是非常有用的。你只需要通过一些简短的代码使用分隔符或正则表达式来分割字符串。所以,如果你想处理字符串split()方法提供了一种非常简单和高效的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值