0

我必须标记以下字符串

12/12/2010:{content1:[{xyz,abc}],13/12/2010:{content2:[{xyz,abc},{content3:[{aa,bb}]}]

如果上面的字符串有 }],我需要拆分它。所以我做了,

    String[] tokens = null;
StringTokenizer csvToken = new StringTokenizer(csvString,"]}");
tokens = new String[csvToken.countTokens()];
int tmp = 0;
while(csvToken.hasMoreTokens()) {
    tokens[tmp++] = csvToken.nextToken();
}

但它并没有像我预期的那样进行标记。

12/12/2010:{content1:[{xyz,abc
,13/12/2010:{content2:[{xyz,abc
,{content3:[{aa,bb

但我期待的是,

12/12/2010:{content1:[{xyz,abc
,13/12/2010:{content2:[{xyz,abc},{content3:[{aa,bb

我怎样才能使代码按预期工作?

4

2 回答 2

3

String.split(字符串正则表达式)呢?

String toDo = "12/12/2010:{content1:[{xyz,abc}],13/12/2010:{content2:[{xyz,abc},{content3:[{aa,bb}]}]";
String[] splitted = toDo.split("\\}\\]");
for (String s : splitted) {
    System.out.println(s);
}
于 2010-12-10T09:42:36.873 回答
1

好的,看到还没有答案,我的“快速修复”如下:

import java.util.StringTokenizer;

public class Test {

 public static void main(String[] args) {
  String csvString = "12/12/2010:{content1:[{xyz,abc}],13/12/2010:{content2:[{xyz,abc},{content3:[{aa,bb}]}]";

  String[] tokens = null;
  StringTokenizer csvToken = new StringTokenizer(csvString,"]}");
  tokens = new String[csvToken.countTokens() - 1];
  int tmp = 0;
  while(csvToken.hasMoreTokens()) {
   tokens[tmp++] = csvToken.nextToken();
   if (tmp == tokens.length) {
    tokens[tmp - 1]  += csvToken.nextToken();
   }
  }

  for (String token : tokens) {
   System.out.println(token);
  }

 }
}

就个人而言,我将使用 String.split()方法并使用我的解决方案“想法”,如上所述。或者,如果你够勇敢,可以使用正则表达式。

PS代码测试和工作....

输出:

12/12/2010:{content1:[{xyz,abc
,13/12/2010:{content2:[{xyz,abc,{content3:[{aa,bb

于 2010-12-10T09:45:32.323 回答