【问题标题】:Split String with .(dot) character java android [duplicate]用.(点)字符分割字符串java android [重复]
【发布时间】:2015-01-01 04:42:38
【问题描述】:

你好朋友,我有类似的字符串

Android_a_b.pdf

我想像 Android_a_bpdf 一样拆分它

我试试下面的代码

String s="Android_a_b.pdf"; 
String[] parts = s.split(".");
String part1 = parts[0];  
String part2 = parts[1];  

当我运行上面的代码时,它给了我类似的错误

11-05 09:42:28.922: E/AndroidRuntime(8722): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0

String part1 = parts[0]; 线

知道怎么解决吗?

【问题讨论】:

    标签: java android split string-split


    【解决方案1】:

    您需要使用\ 转义.

    例如:

    String s="Android_a_b.pdf";
    String[] parts = s.split("\\."); // escape .
    String part1 = parts[0];
    String part2 = parts[1];
    

    现在它将被.分割

    Split(regex) in Java

    围绕给定正则表达式的匹配拆分此字符串。

    这个方法的工作方式就像是通过调用两个参数的 split 方法 给定的表达式和零的极限参数。尾随空 因此字符串不包含在结果数组中。

    请记住

    参数: regex - 分隔正则表达式

    【讨论】:

    • 同样重要的是要注意您的错误指出您的数组中没有任何内容。如果您尝试访问 [0] 并获取超出范围的索引,那么您可以放心地认为拆分有问题。
    • 没错。未转义,"." 匹配每个字符,因此每个字符都是一个分隔符,拆分的结果完全由空字符串组成,没有一个包含在返回值中。
    • Pattern.quote 会让你的生活更轻松:s.split(Pattern.quote(".")); (使用导入 java.util.regex.Pattern)
    • 当我们有一个像“12.34...”这样的输入时,分割长度仍然是2。但是如果我们有“12.34...5”,分割长度是5。似乎当一个数字以更多结尾时点,不考虑。但就我而言,我需要考虑到这一点。有什么想法吗?
    猜你喜欢
    • 2013-01-27
    • 2016-02-14
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多