`
panxq0809
  • 浏览: 294745 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA分割字符串注意问题

    博客分类:
  • java
阅读更多
String.split方法

使用String.split方法时要注意的问题
在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。
我们看jdk doc中说明
public String[] split(String regex)
Splits this string around matches of the given regular expression.
参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:
用竖线 | 分隔字符串,你将得不到预期的结果JAVA分割字符串注意问题
String[] aa = "aaa|bbb|ccc".split("|");
//String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的字符串结果
 
用 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。
String[] aa = "aaa*bbb*ccc".split("*");
//String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的字符串结果
 
显然,+ * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后即可得到正确的字符串结果。
"|" 分隔串时虽然能够执行,但是却不是预期的目的,得到的是每个字符的分割,而不是字符串,"\\|"转义后即可得到正确的字符串结果。
还有如果想在串中使用"\"字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果:
String[] aa = "aaa\\bbb\\bccc".split("\\\\");

注意当用"."分隔的时候, 要用"[.]" 进行分隔或"\\."进行分隔!
分享到:
评论

相关推荐

    Java实现 LeetCode 434 字符串中的单词数

    434. 字符串中的单词数 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。 请注意,你可以假定字符串里不包括任何不可... * 这里有一个坑,就是”“会分割出空的字符串,我们需要对空字符串进行判空 *

    leetcode131. 分割回文串

    给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: “aab” 输出: [  [“aa”,”b”],  [“a”,”a”,”b”] ] 思路:搜索回溯,搜索过程中检查是否是...

    Java实现比较版本号

     通用规则是,先将版本字符串按照点号分割,然后主版本与主版本比较、此版本与此版本比较,如此按序一级一级往后比较,直到有分出大小;  值得注意的是,很多比较版本号的方法都先将字符串转换成int或者double...

    java版数字生成大写金额

    /*传入金额字符串返回大写金额 * 参数:String num 字符型金额,如 ‘¥100,200.01’ * 注意:1、可以加‘¥’和‘,’分割金额,其他符号不识别。 * 2、金额需在万亿以下,即整数部分只识别13位有效数字。 * 3、小数...

    java 面试题 总结

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...

    Java-PHP-C#

    "^The": 匹配以 "The"开头的字符串; "of despair$": 匹配以 "of despair" 结尾的字符串; "^abc$": 匹配以abc开头和以abc结尾的字符串,实际上是只有abc与之匹配 "notice": 匹配包含notice的字符串 你可以看见...

    java面试题

    答:String是不可变的对象,每次对String类型进行改变都相当于产生了一个新的对象,StringBuffer是可变的字符序列,所以如果要经常改变某个字符串的话建议使用StringBuffer。 list、set、map问题? 答:set 不允许...

    leetcode添加元素使和等于-LeetCode:LeetCode解决方案和技巧

    除撇号外,所有非字母数字的Java字符串拆分 // 用除英文字符以外的所有符号 分割 words= Str.split("\\W+"); words = Str.split("[^\\w']+"); // 非特殊英文字符 words = Str.split("[^a-zA-Z0-9']+"); // 特殊英文...

    超级有影响力霸气的Java面试题大全文档

     JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要...

    IO输入输出体系.rar

    File.pathSwparator 与系统有关的路径分隔符,它被表示为一个字符串 windows为 分号";" File.pathSwparatorChar 与系统有关的路径分割符,它被表示为一个字符 File.separator 与系统有关的 默认名称分隔符 ,它被...

    《javaScrip开发技术大全》源代码

    • sample31.htm 将字符串分割成数组 • sample32.htm 转换大小写 • sample33.htm 与HTML相关的方法 • sample34.htm 字符串比较 • sample35.htm 修改字符串中的某一个...

    C++实例输入多行数字到数组

    读入字符,如果不是空格,存入一个临时的字符串; 如果是空格,字符串转换成整数并压入数组; 注意: 对于连续的空格输入要进行判断,否则会输入一堆0; 在读入换行符的时候要将最后的临时字符串存进数组; 代码: ...

    javaSE代码实例

    第13章 字符串——优异的内存组织机制 243 13.1 String类的基础知识 243 13.1.1 对象的创建 243 13.1.2 巧用构造器 244 13.1.3 String类的重要方法 245 13.2 String对象的内存机制 248 13.2.1 一段令人...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # ...

    HTML开发王

    3.5.5 文本字符串 3.5.6 使用uri 3.5.7 使用颜色 3.5.8 使用长度 3.5.9 内容类型(mime类型) 3.5.10 语言代码 3.5.11 字符编码 3.5.12 单字符 3.5.13 日期和时间 3.5.14 链接类型 3.5.15 介质描述符 3.5.16 脚本数据 ...

    PHP3程序设计

    3.4.7 字符串连接操作符 38 3.4.8 逻辑操作符 38 3.4.9 赋值操作符 40 3.5 总结 41 第4章 程序控制 43 4.1 表达式 43 4.1.1 简单表达式 43 4.1.2 有副作用的简单表达式 43 4.1.3 复杂表达式 44 4.2 语句 44 4.3 函数...

    Tcl_TK编程权威指南pdf

    第4章 tcl中的字符串处理 string命令 append命令 format命令 scan命令 binary命令 相关章节 第5章 tcl列表 tcl列表 构建列表 获取列表元素 修改列表 搜索列表 对列表进行排序 split命令 join命令 ...

Global site tag (gtag.js) - Google Analytics