`

Java String.split()的bug?

阅读更多

以下程序:

String str1 = "a,b,,,,";
System.out.println("String length is: " + str1.split(",").length);
		
String str2 = "a,b,,,,c";
System.out.println("String length is: " + str2.split(",").length);

 输出:

String length is: 2
String length is: 6

 

0
0
分享到:
评论
3 楼 lijingshou 2014-06-13  
yutaoshen 写道
看看API 那个列子和你这个一样

public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。

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

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


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

谢谢.您说的多.
JAVA doc里还特别声明:
If <i>n</i> is zero then
     * the pattern will be applied as many times as possible, the array can
     * have any length, and trailing empty strings will be discarded
所以这不是JDK的bug...
2 楼 Wayne911 2014-06-07  
JavaScript 里面的话第一个和第二个的结果都是6
1 楼 yutaoshen 2014-06-06  
看看API 那个列子和你这个一样

public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。

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

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


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

相关推荐

    Java规约.docx

    - **String的split方法**:使用split时,注意处理分隔符后的空元素,防止访问越界。 4. **代码风格**: - **大括号使用**:if/else/for/while/do语句必须使用大括号,即使只有一行代码。 - **switch语句**:每个...

    【Java开发bug100例】1.java代码实现合并列(csdn)————程序.pdf

    这个bug100例的第一部分就是关于如何使用Java代码实现合并列。这里我们看到一个使用Java 8 Stream API的例子,该例子展示了如何创建一个Function对象列表,这些对象将用于构造SQL表达式以合并列。 首先,我们注意到...

    java performance2

    - **字符串分割**:对于简单的字符串分割操作,建议使用`String.split()`方法,但对于复杂的分割逻辑,可以考虑使用`StringTokenizer`类。 - **字符串池与intern()方法**:对于经常重复使用的字符串,可以利用字符...

    Java软件工程师面试宝典

    可以使用String类的split方法,将字符串按指定分隔符分割成数组。 36. 数组和String的length()方法? 数组有length属性,String有length()方法。 37. 字符串拼接操作创建的对象数量? 创建了5个对象,分别是"a"、...

    java coding style

    String longExpression = "This is a very long string that needs to be split " + "into multiple lines for better readability."; ``` #### 5.0 注释 注释是解释代码意图的重要工具,良好的注释习惯能够...

    StringUtils(最新)

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

    jdk1.7压缩包

    5. **改进的字符串处理**:Java 7增强了字符串操作,例如`String`类新增了`isEmpty()`方法,以及`split()`方法允许正则表达式作为分隔符,提高了字符串操作的便捷性。 6. **菱形运算符**:在创建泛型实例时,可以...

    168 道2019年最新的Python面试题,让你最短时间内掌握核心点.docx

    10. **处理bug**:调试、日志记录、单元测试、异常处理等是处理bug的常见方法。 11. **Python与其他语言区别**:Python是动态类型、解释型语言,强调代码可读性,与其他编译型、静态类型语言如Java、C++有显著差异...

    jdk1.7.0_67

    JDK 1.7.0_67是Java 7的一个特定版本,发布于2014年,它包含了众多增强特性和修复的bug,以提高开发者的效率和代码质量。 **核心组件** 1. **Java编译器(javac)**:这是Java程序开发的必备工具,将源代码编译成...

    Android dexclassLoader 热更DEmo.zip

    public DexClassLoader(String dexPath, String optDir, String librarySearchPath, ClassLoader parent) { super(dexPath, optDir, librarySearchPath, parent); } ``` 参数说明: - `dexPath`:表示.dex文件的...

    168 道2019年最新的Python面试题,让你最短时间内掌握核心点.pdf

    10. **bug处理**:遇到bug,通常先定位问题,复现错误,然后查看日志、调试代码,必要时使用单元测试和断言来辅助定位。 11. **Python与其他语言的区别**:Python强调可读性,是动态类型语言,而Java、C++等更注重...

    jdk-7u10-windows

    4. **改进的字符串操作**:例如,`String` 类新增了 `join()` 方法,用于将数组或集合中的元素连接成字符串;`split()` 方法现在支持正则表达式,并可以限制返回的子字符串数量。 5. **文件系统API增强**:引入了新...

    jdk1.7.0_80

    同时,对Java网络连接、I/O和多线程等方面的bug进行了修复。 **四、安装与配置** 由于JDK 1.7.0_80是免安装版,解压后设置环境变量即可使用。通常需要配置`JAVA_HOME`、`PATH`和`CLASSPATH`,确保系统能够找到Java...

    CE中文版-启点CE过NP中文.exe

    Fixed Lua dissectCode.getStringReferences now also returns the string Fixed Lua breakpoints that specify a specific function Fixed Lua toAddress when the 2nd parameter is an address Fixed assembling ...

    Stanford-corenlp-3.9.0

    props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse, sentiment"); StanfordCoreNLP pipeline = new StanfordCoreNLP(props); String text = "Stanford University is located in ...

    Quora-Typeahead-Search

    这通常涉及到Java的String类的各种方法,如split()、trim()等。 3. 预处理和索引构建:在用户开始搜索之前,我们需要先将所有可能的查询词或问题存入Trie中,这一步称为预处理和索引构建。这个过程需要遍历整个数据...

Global site tag (gtag.js) - Google Analytics