java - 在android中拆分字符串时获取数组索引越界

标签 java android

我正在开发安卓系统。我有一个如下所示的字符串。

String str = "@test1|test2|test3@test4|test5|test6|test7@test8|test9|test10|test11@test12|test13|test14|test15@......"

我使用 String[] str1 = str.split("[@]"); 将上面的字符串与“@”分开 这样最后的结果就是

str1[0] = 测试 1|测试 2|测试 3

str1[1] = test4|test5|test6|test7

...

我使用的代码 fragment

   for (int x = 1; x < str1.length; x++) {
    String[] st1 = str1 [x].trim().split("\\|");
    System.out.println("first" + st1[0].trim());
    System.out.println("second" + st1[1].trim());
    System.out.println("third" + st1[2].trim());
    System.out.println("fourth" + st1[3].trim());  

   List1.add(st1[0].trim());
   List2.add(st1[1].trim());
   List3.add(st1[2].trim());
   List4.add(st1[3].trim());

    }

在上面的 for 循环中,当循环从 x=2 开始时它工作正常。但是如果我给 x=1 那么它就是抛出数组 “System.out.println("fourth"+ st1[3].trim());”处的索引越界异常。是因为 str1[0] 仅包含 3 项,而其余项包含 4 项。所以现在我无法得到用“|”分割后的第四个值。请告诉我如何获得第四个值。提前致谢。

最佳答案

ArrayIndexOutOFBound 即将到来,因为您正在访问您可以通过以下两种方式获得的第四个值,

String[] str1 = str.split("@");
        for (int x = 1; x < str1.length; x++) {
            String[] st1 = str1[x].trim().split("\\|");
            for (int j = 0; j < st1.length; j++) {
                System.out.println(st1[j]);

            }

        }

String[] str1 = str.split("@");
        for (int x = 1; x < str1.length; x++) {
            String[] st1 = str1[x].trim().split("\\|");
            /*for (int j = 0; j < st1.length; j++) {
                System.out.println(st1[j]);

            }*/
            if(st1.length> 0 )
                System.out.println("first" + st1[0].trim());
            if(st1.length> 1 )
                System.out.println("second" + st1[1].trim());
            if(st1.length> 2 )
                System.out.println("third" + st1[2].trim());
            if(st1.length> 3 )
                System.out.println("fourth" + st1[3].trim());

        }

关于java - 在android中拆分字符串时获取数组索引越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18179895/

相关文章:

java - 警告 : [serial] serializable class SomeClass has no definition of serialVersionUID

java - 字符串列表中单词的频率

android - 为什么图像会模糊?

Android rsSetElementAt 4.2

java - 在警报对话框中,我想显示所选值

java - DynamicJasper 中的自动隐藏列

java - 传递给持久化的 Hibernate 分离实体

java - 如何根据字符串的组合删除重复项?

android - .getPath() 与 cursor 在 Android 中从 uri 获取文件的真实路径的区别

android - onPostExecute() 的 "runs on UI thread"到底是什么意思?