2010-12-10 3 views
0

Я должен разметить следующую строкуПоследовательные Разделители в StringTokenizer

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

Я урожденная дробить вышеуказанную строку, если она имеет}] consequtively. Так я и сделал,

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 

, как я мог бы сделать код, чтобы работать, как ожидалось?

ответ

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); 
} 
+0

Я тоже пробовал с этим, все еще не работал. :-) – i2ijeya 2010-12-10 09:44:39

+0

это не так? Этот точный код работал для меня, как вы ожидали. Например. два результата: – d1x 2010-12-10 09:47:47

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