2009-12-10 104 views
1

我有其代表在格式多维数组的字符串:[[A,A],[B,B]]字符串到多维数组

有一种简单的方法来将此字符串转换成多维数组。

虽然,现在我只是寻找上述解决方案,字符串本身有点复杂。

例如在[[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) 

谢谢,对于任何建议。

回答

2

如果你有过连续字符串控制,我强烈建议你看看JSON。这是一个很棒的格式。它重量轻,易于阅读和便携。

例如,从link(注:空格不显著 - 这都可能是在一行上):

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

JSON提供了一个干净,安全的机制,在编码字符串出现,太。点击查看大量示例。

+0

谢谢。如果它符合我的需求,我需要进一步观察。它看起来像要走的路。我还不确定。 :-) – 2009-12-10 01:47:32

+0

工程就像一个魅力。 – 2009-12-10 13:24:12

0

您的输入格式看起来像JSON的子集。在该页面上列出的任何Java JSON解析器应该能够做你想做的。

0

检查此示例:

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] + "\""); 
0

我没有在使用了一段时间的java,而是采取直接刺回答你的问题:

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("(?<!\\),"); 
} 

以它为它的价值。像其他人所建议的那样,解析器可以用更少的努力和更多的灵活性来实现这一点。