0

I have a csv that has been read and split in 3 different csvs. The csv was pipe separated and the split variable is saved in a string variable. I want to split the new string as comma separated string but as soon as I do that, it gives an exception.`

try(BufferedReader br1 = new BufferedReader(new FileReader(newcsvCategory))){
    String line;
    while ((line = br1.readLine()) != null) {
        String[] value1 = line.split("\\|,",-1);
        String Id = value1[0];
        String CatId=value1[1];
["Active Catalog Detail (Network Id "|" Category Ids "]
["209"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,10342,5193,10738,11744,10039,10840,5132,10011,11132,5233,10792"]
["174"|"4900,10082,10119,10358,10039,5132,10011"]
["200"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,5193,10738,11623,10039,10840,5132,10011,11132,5233,10792"]
["181"|"4900,10358,10011"]
["240"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,10342,5193,10738,11744,10039,10840,5132,10011,11132,5233,10792"]
["206"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,5193,10738,11623,10039,10840,5132,10011,11132,5233,10792"]
["255"|"4900,10368,11093,11581,10082,10206,11621,10431,10119,11622,10358,11094,2,10342,5193,10738,11744,10039,10840,5132,10011,11132,5233,10792"]
["251"|"4900,10368,11093,11581,10082,10206,11621,10431,10119,11622,10358,11094,2,10342,5193,10738,11744,10039,10840,5132,10011,11132,5233,10792"]
["231"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,10342,5193,10738,11744,10039,10840,5132,10011,11132,5233,10792"]
["179"|"4900,10368,11618,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,5193,10738,11623,10039,10840,5132,10011,11132,5233,10792"]
["184"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,5193,10738,11623,10039,10840,5132,10011,11132,5233,10792"]
["187"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,5193,10738,11623,10039,10840,5132,10011,11132,5233,10792"]
["247"|"4900,10368,11093,11581,10082,10206,11621,10431,10119,11622,10358,11094,2,10342,5193,10738,11744,10039,10840,5132,10011,11132,5233,10792"]
["215"|"10358"]
["216"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,10342,5193,10738,11744,10039,10840,5132,10011,11132,5233,10792"]
["238"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,10342,5193,10738,11744,10039,10840,5132,10011,11132,5233,10792"]
["224"|"4900,10368,11093,11581,10082,10206,10431,10119,11622,10358,11094,2,10342,5193,10738,11744,10039,10840,5132,10011,11132,5233,10792"]

I want split the first column and second column as pipe separated and then further separate the second column as comma separated.

I'd appreciate any help as I'm a newbie.

added code that is splitting CatId:

String[] temp = CatId.split(",",-1);
System.out.println(temp[1]);
1
  • 4
    Can you include the exception in your question by editing your question? Commented Oct 24, 2018 at 12:31

2 Answers 2

1

Really, can't realise the questions, but give some notes.

// this source string: serveral columsn with different separators
String str = "209|4900,10368,11093,11581";

According to your code, you try to put all separate number into string array, with two steps:

String[] arr = str.split("\\|");    // not line.split("\\|,",-1)
// arr[0] = 209
// arr[1] = [4900,10368,11093,11581]
String[] tmp = arr[1].split(",")
// tmp[0] = 4900
// tmp[1] = 10368
// tmp[2] = 11093
// tmp[3] = 11581

If so, you can do it with one step:

String[] arr = str.split("[\\|,]");
// arr[0] = 209
// arr[1] = 4900
// arr[2] = 10368
// arr[3] = 11093
// arr[4] = 11581
Sign up to request clarification or add additional context in comments.

Comments

0

You want to set the Limit of .split(..) to 2.

 while ((line = br1.readLine()) != null) {
    String[] value1 = line.split("\\|",2);
    String Id = value1[0];
    String CatId=value1[1]
};

To further split the contet of "CatId" use:

// if you need to replace unwanted chars first, you could just use the simple .replace:
CatId = CatId.replace("\"", "").replace("[", "").replace("]", "");
// Then, split the array just by ,
String[] catIdArray = CatId.split("\\,");

1 Comment

Okay, somehow i get the value in value1[1]. i want to apply split basesd on "," on value1[1] but it gives exception. java.lang.ArrayIndexOutOfBoundsException: 1

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.