2013-06-24 3 views
4

Я как бы новичок в Java. Я хотел бы знать, есть ли еще более простой, но эффективный способ реализовать следующее разделение строки. Я пробовал с шаблоном и совпадением, но на самом деле не так, как хочу.Разбиение строк на {} & []

"{1,24,5,[8,5,9],7,[0,1]}" 

быть разделены на:

1 
24 
5 
[8,5,9] 
7 
[0,1] 

Это совершенно неверный код, но я все равно я отправляю его:

String str = "{1,24,5,[8,5,9],7,[0,1]}"; 
    str= str.replaceAll("\\{", ""); 
    str= str.replaceAll("}", ""); 
    Pattern pattern = Pattern.compile("\\[(.*?)\\]"); 
    Matcher matcher = pattern.matcher(str); 
    String[] test = new String[10]; 
    // String[] _test = new String[10]; 
    int i = 0; 
    String[] split = str.split(","); 

    while (matcher.find()) { 


     test[i] = matcher.group(0); 
     String[] split1 = matcher.group(0).split(","); 


     // System.out.println(split1[i]); 
      for (int j = 0; j < split.length; j++) { 
      if(!split[j].equals(test[j])&&((!split[j].contains("\\["))||!split[j].contains("\\]"))){ 
       System.out.println(split[j]); 
      } 

     } 
     i++; 


    } 

} 

с заданным форматом Струнный позволяет говорить {а, b, [c, d, e], ...}. Я хочу заручиться всем содержимым, но те, что указаны в квадратных скобках, должны быть обозначены как один элемент (например, массив).

+7

Не могли бы вы разместить код вы пробовали уже? –

+0

Это данные GSON? –

+0

@AndrewThompson Почему это название? OP никогда не говорил, что хочет разбить на многомерный массив int, он сказал, что просто хочет разбить строку ... – BackSlash

ответ

6

Это работает:

public static void main(String[] args) 
    { 
    customSplit("{1,24,5,[8,5,9],7,[0,1]}"); 
    } 


    static void customSplit(String str){ 
    Pattern pattern = Pattern.compile("[0-9]+|\\[.*?\\]"); 
    Matcher matcher = 
      pattern.matcher(str); 
    while (matcher.find()) { 
     System.out.println(matcher.group()); 
    } 
    } 

Урожайность выходного

1 
24 
5 
[8,5,9] 
7 
[0,1] 
+0

Отлично. Спасибо :) – user2516389

+2

Хорошее решение. Помните, @ user2516389, хотя это не будет проверять, что список в целом окружен '' '' '' '' фигурными скобками и что «вложенные массивы» могут содержать что угодно. Например, для ввода '' garbarge в начале 5, [8, foo, 5,9], 7}}} '' вывод '5',' [8, foo, 5,9] ',' 7' (где каждый находится на собственной линии). Другой пример: «{2,3}, 4,5" производит '2 3 4 5', а также' '{2,3} 4,5" '. –