`
xubaolin9
  • 浏览: 96246 次
社区版块
存档分类
最新评论

java String的split方法容易犯的错误

阅读更多

今天用split方法分割一个类似"1|2|20100312"的字符串,用Arrays.asList将String[]转成List,结果却是这样

[, 1, |, 2, |, 2, 0, 1, 0, 0, 3, 1, 2]

 

这问题遇到过多次, 搜索了一下, 下面链接算是一个解答

 

http://www.360doc.com/content/06/1212/13/14474_291159.shtml

 

列出几个要点

 

  1. 首先java doc里已经说明, split的参数是reg, 即正则表达式, 如果用"|"分割, 则需使用"\\|"
  2. 用* 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此, 因此也应加入"\\"
  3. 如果字符串中包含"\",首先这个字符串中的"\"需要转义, 即为"\\", 用split时需要写成split("\\\\"), 例子如下System.out.println(Arrays.asList("aaa\\bbb\\bccc".split("\\\\")));

          可以这样思考, 要写成用"\"分割,则首先需要转义"\\", 同时要让"\\"在正则表达式中有意义, 还需在第一个"\"和第二个"\"前面再加一个"\", 就变成了四个"\".

 

由此时引伸出几个事情, 也一并列出

  1. 这个问题已经遇到多次, 每次解决这种问题都要花10-20分钟, 这是不应该的, 说明我缺少总结, 成长的基础是把基础打牢, 打牢基础的方法是注意细节, 每个地方都节约一点时间, 都总结出经验, 至少效率上去了, 有了效率, 才有时间提升能力.
  2. 敏感, 用eclipse写代码时, 代码提示已经显示"".split(String regex), 但凡有点经验,这个regex一望而知, 使用split的时候也不会出现这个问题啦
  3. 代码设计上的问题, 我认为java API的设计存在一定问题, 既然是split, 我写啥您就用啥分割算啦, java用的却是regex, 现在我的观点是, java您莫如把split的名字改为splitByRegex, 功能一望而知, 免得无数人在上面载跟头
  4. regex,老兄我不熟呀, 赶紧补上吧

另外javaeye blog的自动保存功能, very good, 赞一个

 

 

分享到:
评论

相关推荐

    有关Java String常用方法的总结.docx

    ### 有关Java String常用方法的总结 #### 一、String 类概述 `String`类是Java中最基础也是最重要的数据类型之一,在Java中被定义为一个不可变类(immutable class),这意味着一旦一个`String`对象创建之后,其...

    浅谈java String.split丢失结尾空字符串的问题

    在Java编程语言中,`String`类提供了许多实用的方法,其中之一就是`split()`。这个方法用于根据指定的分隔符将字符串分割成多个子字符串,并返回一个字符串数组。然而,有时候开发者可能会遇到一个问题,即使用`...

    java 中用split分割字符串,最后的空格等不被拆分的方法

    `split()` 方法的定义在 `java.lang.String` 类中,其基本语法如下: ```java public String[] split(String regex) ``` 这里的 `regex` 参数是一个正则表达式,用于定义拆分字符串的规则。在本例中,我们使用 "\t...

    Java中String类(字符串操作)的10个常见问题和解决方法

    标题为"Java中String类(字符串操作)的10个常见问题和解决方法"的文档主要探讨了Java语言中字符串处理的核心类String的使用细节和最佳实践。以下是根据文档内容总结的知识点: 1. 字符串比较 在Java中,比较字符串...

    浅析Java中Split函数的用法技巧

    Java中的`String.split()`方法是处理字符串的强大工具,它能够根据指定的分隔符将一个字符串分割成多个子字符串,并将这些子字符串存储在一个数组中。这个方法在处理文本数据时非常常见,尤其是在解析CSV格式的数据...

    split this is a split java develop utils package

    1. **`String.split()`方法**:这是Java中基本的字符串分割方法,它根据提供的分隔符将字符串分解成子字符串数组。例如,`"Hello,World,Java".split(",")`会返回`["Hello", "World", "Java"]`。 2. **正则表达式**...

    String类的一些常用方法的测试

    在Java编程语言中,`String`类是使用最频繁的类之一,主要用于处理文本字符串。这个测试涵盖了`String`类的一些关键方法,帮助我们更好地理解和使用这些方法来操作字符串。以下是一些`String`类中常见的方法及其用法...

    java冒泡排序java冒泡排序集锦方法!

    `Collections.sort()` 是 Java 中一种快速且高效地对集合(如 ArrayList)进行排序的方法。可以自定义比较器来指定排序规则。 **示例代码分析**: ```java public class Main { public static void main(String[] ...

    Java中正则表达式split()特殊符号使用详解

    Java中的split()方法是String类中的一个方法,该方法使用正则表达式来将字符串分割成多个子字符串。然而,在使用split()方法时,需要注意特殊符号的使用,否则可能会导致错误的结果。本文将详细介绍Java中正则表达式...

    java字符串实验题目

    - `split(String regex)`:根据正则表达式分割字符串并返回一个字符串数组。 除了上述基本操作,Java String类还涉及到了字符串的比较。`equals()`方法用于比较两个字符串的内容是否相等,而`compareTo()`则基于...

    详解json string转换为java bean及实例代码.docx

    ### 详解 JSON String 转换为 Java Bean 及实例代码 #### 一、引言 在现代软件开发中,尤其是涉及到前后端交互的应用场景,数据格式的转换变得尤为重要。JSON(JavaScript Object Notation)是一种轻量级的数据...

    深入了解java中的String-字符串(csdn)————程序.pdf

    - 字符串格式化允许我们以更清晰、更简洁的方式表示动态数据,例如使用`String.format()`方法或`printf()`方法,可以避免使用`+`进行字符串拼接带来的潜在错误。 掌握这些知识点有助于理解和优化Java中的字符串...

    java读取TXT文件入库

    可以使用`split()`方法将一行内容分割成多个字段。 - 如果字段包含特殊字符或分隔符,可能需要考虑转义或使用正则表达式进行分割。 ```java String[] fields = line.split(","); ``` 3. **连接数据库** - Java...

    java获取ip地址返回地区

    可以使用`String`类的`split()`方法完成此操作: ```java String[] parts = result.split("\\|"); String country = parts[0]; String region = parts[1]; String city = parts[2]; ``` 4. **错误处理和优化...

    String 字符串截取,获得指定字符数量,截取String两个内容之前内容并去重.pdf

    在Java中,可以使用String类的substring方法来截取指定范围的子字符串。具体来说,substring(int beginIndex)可以截取从beginIndex位置开始到字符串末尾的所有字符;substring(int beginIndex, int endIndex)方法则...

    Java编码规范总结

    修复建议:String的split方法传递的参数是正则表达式,正则表达式本身用到的字符需要转义,如:句点符号“.”,美元符号“$”,乘方符号“^”,大括号“{}”,方括号“[]”,圆括号“()” ,竖线“|”,星号“*”,...

    Java面试宝典2017

    - `interface`只能声明方法(从Java 8开始可以有默认方法和静态方法),所有方法默认是公共的。 #### 25. `abstract`方法的特性 - `abstract`方法不可以同时是`static`,因为`static`方法与类关联而不是对象。 - `...

    string check

    例如,Python的`split()`,Java的`split()`方法。 8. **字符串拼接**:合并多个字符串,如日志记录或构建动态SQL语句。在Python中使用`+`操作符或`join()`方法,Java中使用`+`或`StringBuilder`/`StringBuffer`。 ...

    解析VCard java代码

    可以使用`split()`方法分割行,根据冒号和等号的位置提取信息。 ```java String[] parts = line.split(": "); String propertyName = parts[0]; String propertyValue = parts[1]; ``` 4. **处理值**:根据VCard...

Global site tag (gtag.js) - Google Analytics