字符串使用split()方法截取时的空字符串问题

一、用例子来说明

1、单个分隔符占据第1个位置

@Test
public void test() {
    String str = "_1";
    String[] s = str.split("_");
    for (int i = 0; i < s.length; i++) {
        System.out.println(s[i]);
    }
}

结果:


1

注意:

1上面的空行中是一个空字符串,不是我打错了

2、多个分隔符连续占据最前面的多个位置

@Test
public void test() {
    String str = "___1";
    String[] s = str.split("_");
    for (int i = 0; i < s.length; i++) {
        System.out.println(s[i]);
    }
}

结果:




1

注意:

1上面的多个空行中都是一个单一的空字符串,不是我打错了

3、单个分隔符占据最后一个位置

@Test
public void test() {
    String str = "1_";
    String[] s = str.split("_");
    for (int i = 0; i < s.length; i++) {
        System.out.println(s[i]);
    }
}

结果:

1

4、多个分隔符连续占据最后面的多个位置

@Test
public void test() {
    String str = "1___";
    String[] s = str.split("_");
    for (int i = 0; i < s.length; i++) {
        System.out.println(s[i]);
    }
}

结果:

1

5、被分割的字符串中间有多个连续分隔符,但是后面以非分隔符结尾

@Test
public void test() {
    String str = "1___2";
    String[] s = str.split("_");
    for (int i = 0; i < s.length; i++) {
        System.out.println(s[i]);
    }
}

结果:

1


2

注意:

中间的那几行里面都是单个空白字符串

6、说明例1和例2中存在的问题

有的时候例1和例2中的效果就是我们想要的效果,但是有的时候不是,可能大多数都不是吧,比如进行价格区间查找的时候,小于8000元的价格区间我会用_8000这种方式来传到后端,后端解析的时候就会遇到空字符串这种问题,我的解决办法是判断字符串分割之后的数组的大小是否是2,并且第一个为空,如果是的,那么这就是我想要的值,我暂时无法做到分割之后让数组中只有一个8000而没有空字符串这种做法,我的做法就是一种折中的做法,大家可以参考

7、解决例3和例4存在的问题

说明:

有的时候例4中的效果就是我们想要的效果,但是有的时候不是,即使分隔符后面是空字符串,但是这些空字符串可以帮助我们计数,比如我们要计算被分割符分割之后的数目,那么这些空字符串也要计算在内,所以我们需要解决例3和例4存在的问题

做法1:

@Test
public void test() {
    String str = "1___";
    String[] s = str.split("_", -1);
    for (int i = 0; i < s.length; i++) {
        System.out.println(s[i]);
    }
}

做法2:

@Test
public void test() {
    String str = "1___";
    String[] s = str.split("_", 10);
    for (int i = 0; i < s.length; i++) {
        System.out.println(s[i]);
    }
}

结果:

1



解释:

split()方法中可以有两个参数,其中第二个参数大家用的不多,官方解释对第二个参数的解释如下:

@param limit
the result threshold, as described above

中文解释就是如上所述的结果阈值

然后菜鸟教程中的解释是:

limit:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

简单来说就是可以设置返回数组的最大值,例如不加限制的时候分割之后的数组大小是10,但是我添加了限制是5,那么返回的数组大小就是5,这就是limit的含义,至于它为什么能解决我们的问题,我是这样考虑的,在默认不加限制的情况下匹配到后面发现后面全部都是空字符串,因此官方就不让这些空字符串添加到返回数组中了,他们认为这是没有意义的,而添加limit之后就会按照limit的限制次数去进行分割,即使后面都是空字符串,也是会返回的,这相当于是官方关闭了一扇门,又给我们打开了一扇窗,如果你能确定分割字符串形成的数组大小,那你可以在limit处写一个确定的值,例如上面的10,如果你不能确定,那你就写一个-1吧,这个应该代表无穷大,部分思想来自于另外一个博主,博文地址是:String.split()遇到空字符串的几种情况

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 Java 中,可以使用 `String.split` 方法字符串拆分为字符串数组。例如: ```java String str = "apple,banana,cherry"; String[] arr = str.split(","); ``` 这样,字符串数组 `arr` 就会包含三个元素:`"apple"`、`"banana"` 和 `"cherry"`。 你也可以指定拆分的次数,例如: ```java String str = "apple,banana,cherry,date"; String[] arr = str.split(",", 3); ``` 这样,字符串数组 `arr` 就会包含三个元素:`"apple"`、`"banana"` 和 `"cherry,date"`。 注意,`String.split` 方法会将字符串按照给定的分隔符拆分,如果分隔符不存在,则整个字符串会作为数组的唯一元素返回。 ### 回答2: 在Java中,split()方法是用来将一个字符串根据指定的分隔符分割成字符数组的。具体步骤如下: 1. 首先,定义一个要分割字符串,例如:String str = "Hello,World!"; 2. 调用split()方法,并将要分割字符串作为参数传入,同指定分隔符。例如:String[] arr = str.split(","); 3. split()方法会将字符串按照指定的分隔符进行分割,并返回一个字符串数组。在这个例子中,分隔符是逗号,所以会将"Hello"和"World!"分离出来。 4. 最后,我们可以通过遍历数组来访问每个分割后的子串。例如:for (String s : arr) { System.out.println(s); } 这样,就可以将字符串"Hello,World!"按照逗号分隔成"Hello"和"World!"两个子串,并将它们存储在一个字符串数组中。我们可以根据需要进行进一步的处理或使用这些子串。 需要注意的是,如果分隔符是一个正则表达式中的特殊字符,例如"."、"|"等,需要在分隔符前面加上转义字符"\\"。例如:String[] arr = str.split("\\."); 另外,如果要将整个字符串分隔成一个字符数组,可以使用String类的toCharArray()方法。例如:char[] charArr = str.toCharArray(); 总结来说,通过调用Java的split()方法,可以将一个字符串根据指定的分隔符分割成字符数组,方便我们对字符串进行处理和操作。 ### 回答3: split() 方法是 Java 中的一个字符串方法,用于将一个字符串分割字符串数组。它可以根据指定的分隔符将字符串拆分成多个子字符串,并将这些子字符串存储在一个数组中。 使用 split() 方法非常简单,只需在字符串对象后面用点号(.)调用该方法,并传入分隔符作为参数。返回的结果将是一个字符串数组,其中的每个元素都是分隔后的子字符串。 以下是一个示例代码: ```java String str = "Hello,World,Java"; String[] arr = str.split(","); // 使用逗号作为分隔符 ``` 在上面的例子中,str 是要被分割字符串,arr 是存储分割结果的字符串数组。split(",") 表示使用逗号作为分隔符对 str 进行分割。 执行以上代码后,arr 数组中的元素将是 ["Hello", "World", "Java"]。 需要注意的是,括号中的分隔符可以是任意字符串,不仅限于单个字符。例如,可以使用格作为分隔符:`str.split(" ")`,也可以使用多个字符作为分隔符:`str.split("abc")`。 另外,如果字符串中没有找到分隔符,split() 方法将返回原始字符串作为数组中的唯一元素。 总结:使用 split() 方法可以轻松将一个字符串按照指定的分隔符拆分成字符串数组,从而方便进行进一步的数据处理和操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值