我必须标记以下字符串
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
如何使代码按预期工作?
答案 0 :(得分:3)
String.split(String regex)怎么样?
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);
}
答案 1 :(得分: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:{内容2:[{XYZ,ABC,{content3:[{AA,BB