Java StringTokenizer中的连续分隔符
我必须标记以下字符串Java StringTokenizer中的连续分隔符,java,string,stringtokenizer,Java,String,Stringtokenizer,我必须标记以下字符串 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.cou
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
如何使代码按预期工作?关于String.split(String regex)呢
String.split(字符串正则表达式)呢
好吧,既然还没有答案,我的“快速解决方案”如下:
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()
方法并使用我的解决方案“idea”,如上所述。或者,如果你很勇敢,可以使用正则表达式
PS代码经过测试并正常工作
输出:
2010年12月12日:{content1:[{xyz,abc,2010年12月13日:{content2:[{xyz,abc,{content3:[{aa,bb
好吧,既然还没有答案,我的“快速解决方案”如下:
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()
方法并使用我的解决方案“idea”,如上所述。或者,如果您有勇气,请使用正则表达式
PS代码经过测试并正常工作
输出:
2010年12月12日:{content1:[{xyz,abc,2010年12月13日:{content2:[{xyz,abc,{content3:[{aa,bb
没有吗?正如你所期望的那样,这个精确的代码对我有效。例如,两个results@d1x,您必须将最后一个
s
附加到上一个拆分的上。请参阅问题的预期输出。事实上,我已经给出了与原始输入相同的示例字符串。是的,我已经尝试过,上面的字符串可以工作,但对于string@d1x.是的,split对我的原始输入也很好。谢谢。它没有?正如您所期望的,这个代码对我很有效。例如,两个results@d1x,您必须将最后一个s
附加到上一个拆分的上。请参阅问题的预期输出。事实上,我已经给出了与原始输入相同的示例字符串。是的,我已经尝试过,并且上面的e字符串可以工作,但它不适用于string@d1x.是的,对于我的原始输入,拆分也很好。谢谢。