java 竖线分割字符串的问题

例1:
 String[] paraStr = "6010;320100;A".split(";");
 System.out.println(Arrays.toString(paraStr));
输出:[6010, 320100, A]

Ok

例2:
 String[] paraStr = "6010|320100|A".split("|");
 System.out.println(Arrays.toString(paraStr));
输出:[, 6, 0, 1, 0, |, 3, 2, 0, 1, 0, 0, |, A]

NO,和期望值相差甚远

例3:
 String[] paraStr = "6010+320100+A".split("+");
 System.out.println(Arrays.toString(paraStr));
输出:
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
+
异常!

有现象,才能总结出结论:

使用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,他对一些特殊的字符可能会出现你预想不到的结果:
1.用竖线 | 分隔字符串,你将得不到预期的结果。
2.用 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。

显然,| + * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后即可得到正确的字符串结果。
"|" 分隔串时虽然能够执行,但是却不是预期的目的,得到的是每个字符的分割,而不是字符串,"\\|"转义后即可得到正确的字符串结果。
还有如果想在串中使用"\"字符,则也需要转义.首先要表达"a\b"这个串就应该用"a\\b",如果要分隔就应该这样才能得到正确结果:
String[] aa = "aaa\\bbb\\bccc".split("\\\\");

注意:除了使用“\\|”外,也可以用"[.]" 进行分隔!
如:
String[] paraStr = "6010|320100|A".split("[|]");
String[] paraStr = "6010.320100.A".split("[.]");

java 竖线分割字符串的问题的更多相关文章

  1. Java StringTokenizer分割字符串

    除了String本身的split方法,JDK在很早就提供了StringTokenizer这个类来分割字符串: 不过,由于正则表达式和String本身的功能越来越多,StringTokenizer已经被 ...

  2. Java中分割字符串

    java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 p ...

  3. 关于java中分割字符串

    例子:String path = "123.456.789"; 如果要使用“.”将path分割成String[], path.split("//."); or ...

  4. Java开发笔记(三十七)利用正则串分割字符串

    前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串.分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号.空格等等都可 ...

  5. Android--split()分割字符串特殊用法

    split()分割字符串 1.不同环境下的区分 Java:分割字符串不能写成split("$")//$为要分割的字符Android:分割字符串需要加上中括号split(" ...

  6. Java中的字符串分割 .

    转自 http://blog.csdn.net/yuwenhao0518/article/details/7161059 http://longkm.blog.163.com/blog/static/ ...

  7. java split进行字符串分割

    在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1.如果用"."作为分隔的话,必须是如下写法,Str ...

  8. js,java,jstl多分隔符分割字符串

    1.js多分隔符 分割字符串 var username = “zhao,li;wang.liu”: var arr = str.split(/;|:|,|,|./);  括号里面可以写多分割符号,中英 ...

  9. java关于split分割字符串,空的字符串不能得到的问题

    java关于split分割字符串,空的字符串不能得到的问题   class T { public static void main(String args[]) { String num[] = ne ...

随机推荐

  1. javascript中string对象方法中的slice、substring、substr的区别联系

    1.slice.substring.snustr均属于String的对象方法,用于截取或提取字符串片段,三者均布破坏原先的字符串,而是以新的字符串返回被提取的部分. <script> va ...

  2. Python文件IO(普通文件读写)

    ## 打开一个文件 - fileobj = open(filename, mode) 其中: fileobj是open()返回的文件对象 filename是该文件的字符串名 mode是指明文件类型和操 ...

  3. 1014-31-首页12-显示weibo未读数--后台运行---定时器

    /** *  当app进入后台时调用 */- (void)applicationDidEnterBackground:(UIApplication *)application{    /**     ...

  4. 011---Djang的cookie和session

    -------------------------------------------------------------cookie与session------------------------- ...

  5. redis学习1(nosql)

    一. 互联网时代背景下大机遇,为什么用nosql 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付.在那个时候,更多的都是静态网页,动态交互类型的网站 ...

  6. [Luogu3806]点分治

    询问树上是否存在距离为k[i]的点对 直接点分治把所有距离预处理出来,然后O(1)回答即可 Code #include <cstdio> #include <algorithm> ...

  7. Android 浮动按钮+上滑隐藏按钮+下滑显示按钮

    1.效果演示 1.1.关注这个红色的浮动按钮 . 可以看到,上滑的时候浮动按钮消失,因为用户迫切想知道下面的东西,而不是回到顶部. 当下滑的时候,用户想回到原来的位置,就可以点击浮动按钮,快速回到顶部 ...

  8. Android Config通用类来记录信息

    1.整体分析 1.1.源代码,可以直接Copy. public class Config { private static int M = 1024 * 1024; private volatile ...

  9. [bzoj3196][tyvj1728]普通平衡树

    真是太差了,到现在才打出一个平衡树的板子.. 感谢blackjack大佬提供的数组版treap板子!!基本完全照搬,blackjack太神啦! 但目前我只会这几个最基本的操作(说白了STL的(mult ...

  10. 3771: Triple

    3771: Triple 链接 题意 n个斧头,每个斧头的价值都不同(开始时没注意到),可以取1个,2个,3个斧头组成不同的价值,求每种价值有多少种组成方案(顺序不同算一种) 分析: 生成函数 + 容 ...