Последовательные разделители в StringTokenizer - PullRequest
0 голосов
/ 10 декабря 2010

Я должен токенизировать следующую строку

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

как я могу заставить код работать так, как ожидалось?

Ответы [ 2 ]

3 голосов
/ 10 декабря 2010

как насчет 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);
}
1 голос
/ 10 декабря 2010

Хорошо, видя, что ответов пока нет, мое «быстрое исправление» выглядит следующим образом:

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: [{хуг, а, 13.12.2010: {content2: [{xyz, abc, {content3: [{aa, bb

...