Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java StringTokenizer中的连续分隔符_Java_String_Stringtokenizer - Fatal编程技术网

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.是的,对于我的原始输入,拆分也很好。谢谢。