zoukankan      html  css  js  c++  java
  • java 竖线分割字符串的问题

    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"这个串就应该用"a\b",如果要分隔就应该这样才能得到正确结果:
    String[] aa = "aaa\bbb\bccc".split("\\");

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

  • 相关阅读:
    null in ABAP and nullpointer in Java
    SAP ABAP SM50事务码和Hybris Commerce的线程管理器
    Hybris service layer和SAP CRM WebClient UI架构的横向比较
    SAP ABAP和Linux系统里如何检查网络传输的数据量
    SAP CRM WebClient UI和Hybris的controller是如何被调用的
    SAP CRM和Cloud for Customer订单中的业务伙伴的自动决定机制
    SAP CRM WebClient UI和Hybris CommerceUI tag的渲染逻辑
    SAP BSP和JSP页面里UI元素的ID生成逻辑
    微信jsapi支付
    微信jsapi退款操作
  • 原文地址:https://www.cnblogs.com/jpfss/p/10195158.html
Copyright © 2011-2022 走看看