tags:

views:

127

answers:

4

I have a string which represents a multidimensional array in the format: [[A, a], [B, b]]

Is there a easy way to convert this string into multidimensional arrays.

Though, for now I am just looking for the above solution the string itself is bit more complicated.

for example in [[A, a], [B, b]]

where A could be "This is a sample text, but could be complicated"  

There is a high possibility that the delimiter comma exists in the text (which will be escaped)

Thanks, for any suggestions.

A: 

Your input format looks like a subset of JSON. Any of the Java JSON parsers listed on that page should be able to do what you want.

moonshadow
A: 

check this sample:

 String[] x = 
  Pattern.compile("ian").split(
    "the darwinian devonian explodian chicken");
for (int i=0; i<x.length; i++) {
  System.out.println(i + " \"" + x[i] + "\"");
pipelinecache
+2  A: 

If you have control over the serialized string, I strongly suggest you look into JSON. It's an awesome format for things like this. It's lightweight, easy to read, and portable.

For example, from the link (note: the whitespace is not significant--this could all be on one line):

[
    [0, -1, 0],
    [1, 0, 0],
    [0, 0, 1]
]

JSON provides a clean and safe mechanism for encoding strings in there, too. Click through for a lot of examples.

Michael Haren
Thanks. I need to look further if it meets my needs. It does look like the way to go. I am not sure yet. :-)
aquitted-mind
Works like a charm.
aquitted-mind
A: 

I haven't used java in a while, but to take a stab answering your question directly:

String[] myArray = input.split("(?<!\\),\s*\[");

String[][] myMDArray = new String[myArray.length][];

for (int i=0; i<myArray.length; i++) {
     myArray[i].replaceAll("(?<!\\)[\[\]]", "");
     myMDArray[i] = myArray[i].split("(?<!\\),");
}

Take it for what it's worth. Like others suggested, there are parsers that will do this with less effort and more flexibility.

Jeff B