3

I am working on android. I have a string like below.

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

I am splitting the above string with "@" using String[] str1 = str.split("[@]"); so that the final results are

str1[0] = test1|test2|test3

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

...

The code snippet I used

   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());

    }

In the above for loop, when the loop starts from x=2 it is working fine. But if I give x=1 then it is throwing array index out of bounds exception at "System.out.println("fourth" + st1[3].trim());". Is because str1[0] consists of only 3 items whereas the remaining consists of 4 items. So now I am unable to get the fourth value after splitting with "|". Please tell me how to get the fourth value. Thanks in advance.

5 Answers 5

3

ArrayIndexOutOFBound is coming because you are accessing the forth value you can get by following two ways,

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]);

            }

        }

or

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());

        }
Sign up to request clarification or add additional context in comments.

Comments

0

You have @ in your string I don't see [@] any where, so why are you splitting the string with this token.

Change

String[] str1 = str.split("[@]")

to

String[] str1 = str.split("@")

For solving indexOutOfBounds:

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( j "= " + st1[j].trim());
  }

}

Comments

0
String str = "@test1|test2|test3@test4|test5|test6|test7@test8|test9|test10|test11@test12|test13|test14|test15@";
        String[] str1 = str.split("[@]");

        for (int x = 0; x < str1.length; x++) {
            String[] str2 = str1[x].trim().split("\\|");
            for (int y = 0; y < str2.length; y++) {
                System.out.println(str2[y].trim());
            }
        }

Output:

test1
test2
test3
test4
test5
test6
test7
test8
test9
test10
test11
test12
test13
test14
test15

Hope this will help you.

Comments

0
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());

}

Change to:

for (int x = 0; x < str1.length; x++) {
String[] st1 = str1 [x].trim().split("\\|");
for (int y = 0; y < st1.length; y++)
{
System.out.println("value at "+String.ValueOf(y)+": " + st1[y].trim());
}

}

2 Comments

Hi it is working fine..thank you..but when i am adding individual values to arraylist it is showing array index out of bounds at line "List4.add(st1[3].trim());". How can I add the 4th value?
can you show me your code that in which arraylist you geting exception
0

You have IndexOutOfBoundException because the first substring (str1[0]) only has 3 items and you tried to access the 4th item. This code snippet should work.

String[] str1 = str.split( "[@]" );
List<String> list = new ArrayList<String>();
for ( int x = 1; x < str1.length; x++ )
{
    String[] st1 = str1[ x ].trim().split( "\\|" );
    for ( int index = 0; index < st1.length; index++ )
    {
        String value = st1[ index ].trim();
        System.out.println( "value in index " + index + "=" + value );
        list.add( value );
    }
 }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.