`
flysnowxf
  • 浏览: 577662 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用apache StringUtils.split替代String.split

    博客分类:
  • Java
阅读更多
如果你对下面几个结果有疑惑的话,建议使用apache commons包的StringUtils.split来替代。

String[] strs = "".split(",");

结果是strs.length=1,strs[0]=""

String[] strs = ",".split(",");

结果是strs.length=0

String[] strs = ",1,".split(",");

结果是strs.length=2,strs[0]="",strs[1]="1"

String.split使用起来潜规则比较多,即使自己清楚,别人也未必一眼就看明白。为了不引起误会,建议使用StringUtils.split来替代,它对空字符串""会进行过滤。

String[] strs = StringUtils.split(",1,,2,", ",");

结果是strs.length=2,strs[0]="1",strs[1]="2"
分享到:
评论
16 楼 bee1314 2013-12-11  
也碰到了同样的问题,确实这样,感谢分享!
15 楼 seanzeng 2010-11-15  
flysnowxf 写道
Jacky-Q 写道
flysnowxf 写道
seanzeng 写道
2、匹配,切分,去掉尾空格,所以变成了空结果

,之后的空格是尾空格,会去除,那,之前的空格为什么也不保留呢?

后面的空格去掉后,前面的空格不就也变成了尾部空格了?去尾部空字符串是一个while(true)动作。

恩,这样的解释就明白了。



呵呵!去掉尾空格,应该是去掉尾部的连续空格,没想到我少说两个字,引起误会了。

{"", "", ""},这3个都是结尾的连续空格,就会全部去掉,返回的length就是0了
14 楼 flysnowxf 2010-11-12  
Jacky-Q 写道
flysnowxf 写道
seanzeng 写道
2、匹配,切分,去掉尾空格,所以变成了空结果

,之后的空格是尾空格,会去除,那,之前的空格为什么也不保留呢?

后面的空格去掉后,前面的空格不就也变成了尾部空格了?去尾部空字符串是一个while(true)动作。

恩,这样的解释就明白了。
13 楼 Jacky-Q 2010-11-12  
flysnowxf 写道
seanzeng 写道
2、匹配,切分,去掉尾空格,所以变成了空结果

,之后的空格是尾空格,会去除,那,之前的空格为什么也不保留呢?

后面的空格去掉后,前面的空格不就也变成了尾部空格了?去尾部空字符串是一个while(true)动作。
12 楼 flysnowxf 2010-11-11  
seanzeng 写道
2、匹配,切分,去掉尾空格,所以变成了空结果

,之后的空格是尾空格,会去除,那,之前的空格为什么也不保留呢?
11 楼 seanzeng 2010-11-09  
String[] strs = "".split(","); 
String[] strs = ",".split(","); 
String[] strs = ",1,".split(","); 

split的规则是:
1、不匹配,返回整个字符串
2、有匹配,进行切分
3、如果结果集中最后的空格(尾空格),去掉


所以很好理解你给你例子:
1、不匹配
2、匹配,切分,去掉尾空格,所以变成了空结果
3、匹配,切分,去掉尾空格,所以变成了{"", "1"}的结果

呵呵!也不算潜规则吧,人家文档写的清清楚楚,没有仔细看吧?不要去掉为空格怎么办?  使用split的另外一个重载形式。
10 楼 smzd 2010-11-08  
这两个都有点诡异。不若javascript中的split清晰。
9 楼 trydofor 2010-11-08  
String.split的行为和通常的理解不太一样,有点诡异 :D
8 楼 blackstreet 2010-11-08  
经常用StringUTils类,希望大家关注下这个类,超好用
http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html
每个方法都有例子,非常的清晰
7 楼 liu_yi126 2010-11-08  
还是按照具体需求来用使用具体的方法..
6 楼 lwz777 2010-11-08  
解决问题的方式可以不同,最主要的是得到自己满意的结果就OK
5 楼 flysnowxf 2010-11-08  
那楼上用API的说明解释一下String[] strs = "".split(",")和String[] strs = ",".split(",")这两种情况的结果。
4 楼 1927105 2010-11-08  
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。

例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果:

Regex 结果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }


参数:
regex - 定界正则表达式
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException - 如果正则表达式的语法无效


JDK API 中讲的很详细的
3 楼 yanyan_zhl 2010-11-07  
这种只能视情况去选择,而不能说那个有问题,那个没问题
他们所要去实现的效果是不一样的,jdk中定义的是最基本的东西,如果需要过滤掉为空的内容,是要自己去实现的
2 楼 senhui19 2010-11-07  
确实在以前开发中遇到过String的split方法出现过很多疑问,但我们也可以自己定义一些自己熟悉的方法,这样比较好吧。
1 楼 joyfun 2010-11-07  
这个不能叫替代
只能说2个类库split的定义都不一样

相关推荐

    org.apache.commons.lang3.StringUtils.jar.rar

    2. **拼接操作**:`StringUtils.join()` 方法允许你将多个对象或数组元素用特定分隔符连接成一个字符串,比使用 `String.concat()` 或 `StringBuilder` 更简洁。 3. **分割操作**:`StringUtils.split()` 可以按照...

    commons-lang-StringUtils.zip

    3. **分割与合并**:`StringUtils.split(String str, char separatorChar)`允许你根据指定的分隔符将字符串分割成数组,而`StringUtils.join(Object[] array, String separator)`可以将数组元素合并为一个字符串,...

    StringUtils(最新)

    4. **字符串分割**:`StringUtils.split(String str, String delimiter)` 可以将字符串按照指定的分隔符进行拆分,并返回一个字符串数组。 5. **替换操作**:`StringUtils.replace(String text, String searchStr, ...

    StringUtils 中文API

    String[] tokens = StringUtils.split(String str, String separator); String joined = StringUtils.join(String[] tokens, String separator); ``` - **示例**: ```java String s = "hello,world"; String...

    commons-lang.rar

    5. **分割**:`StringUtils.split(String str, String delimiter)` 方法可以按照指定的分隔符将字符串分割成数组。 6. **修剪**:`StringUtils.trim(String str)` 方法可以去除字符串两端的空白字符。 7. **反转**...

    Commons培训

    - `StringUtils.split(String str, String separatorChars)`:根据分隔符将字符串拆分成数组。 - **Appending and Padding** - `StringUtils.leftPad(String str, int size, char padChar)`:左侧填充字符串至...

    StringUtils jar包

    这个库主要由Apache Commons Lang项目提供,这是一个广泛使用的开源组件,旨在补充Java标准库中对于字符串操作的功能不足。在Java标准库中,虽然`String`类已经提供了很多基本的字符串操作方法,但`StringUtils`提供...

    StringUtils工具类的使用

    StringUtils是Apache Commons Lang项目的一部分,它提供了一系列静态方法来处理字符串,避免了频繁创建和销毁String对象,从而提高了性能。由于Java的String对象是不可变的,所以这些工具类在处理大量字符串操作时...

    StringUtils api 中文 英文 对照

    `org.apache.commons.lang.StringUtils` 是一个在 Java 开发中广泛使用的工具类,它提供了一系列用于处理字符串的方法,这些方法能够安全地处理 `null` 值,并且具备较高的性能。本文将详细介绍 `StringUtils` 中的...

    StringUtils的各项用法

    String[] result = StringUtils.split(test, ", "); for (String s : result) { System.out.println(s); } ``` 这将输出:apple、banana和grape。如果设置了数组长度,超出部分将被忽略。 总的来说,StringUtils...

    StringUtils (Lang 2_3 API)

    `StringUtils`是Apache Commons Lang库中的一个核心工具类,它提供了大量的静态方法,用于处理字符串。这个库在Java开发中非常常见,因为它弥补了Java标准库中对字符串操作的不足。`StringUtils`类包含了多种实用...

    StringUtils 字符串常用工具

    - `split(String str, String separator)`:根据给定的分隔符将字符串分割成数组。 - `splitByWholeSeparatorPreserveAllTokens(String str, String separator)`:保留分隔符两侧的空白字符。 5. **字符串的替换*...

    jsp 判断list是否包含string的实现方法.docx

    2. **字符串分割**:使用`org.apache.commons.lang3.StringUtils.split`方法按照指定的分隔符将`srcStr`字符串分割成一个字符串数组`splitChars`。 3. **转换为列表**:将分割后的字符串数组转换为`List<String>`...

    StringUtlis工具包

    String[] parts = StringUtils.split(str, ", "); // {"Hello", "World!"} // 转换大小写 String lower = StringUtils.toLowerCase(str); // "hello, world!" String upper = StringUtils.toUpperCase(str); //...

    StringUtils API 使用方法

    `StringUtils` API 是 Apache Commons Lang 库中的一个实用工具类,专门为处理 `java.lang.String` 对象提供了丰富的静态方法。这个库是对 Java 标准库中的 `String` 类方法的一个扩展,尤其在处理 `null` 和空白...

    apache工具类

    - `split(String str, String delimiter)`: 使用指定的分隔符拆分字符串。 - `trim(String str)`: 删除字符串两端的空白字符。 - `abbreviate(String str, int maxLen)`: 将字符串缩短到指定的最大长度,通常用于...

    js常用类和对象

    StringUtils是Apache Commons Lang库的一部分,提供了对字符串操作的丰富补充。以下是一些常用方法: 1. `split(String str, String delimiter)`:这个方法用于根据指定的分隔符将字符串拆分为数组。例如,`...

    stringUtils:通过 golang 移植 Apache commons lang

    现在,你提到的 "stringUtils" 项目是将 Apache Commons Lang 的功能移植到了 Golang 平台,这对于 Go 语言的开发者来说是一个非常有价值的资源。 Apache Commons Lang 中包含的功能广泛,包括字符串的格式化、比较...

    Guava使用培训教程

    下面的示例展示了与 Apache Commons `StringUtils` 在性能上的对比: ```java public void testPerformance() { final String numberList = "One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten"; long start = ...

Global site tag (gtag.js) - Google Analytics