2010-10-14 2 views
1

У меня есть такая строка.Строка массивов синтаксический анализ

{"type":"broad","Text":"cat"},{"type":"broad","Text":"dog"}

String[] keyString = getParts({"type":"broad","Text":"cat"},{"type":"broad","Text":"dog"}); 
for(String part : keyString){ 
    some code here which gives like this 
    String text = "cat"; 
    String type = "broad"; 
} 

Может кто-нибудь сказать мне, как я могу получить текст и ввести отдельно в строке

public static String[] getParts(String keyString) { 
    if(keyString.isEmpty()) 
    return null; 
    String[] parts = keyString.split(","); 
    return parts; 
} 

Или есть какие-либо простые способы, чтобы получить соответствующие строки.

ответ

3

Это выглядит как JSON, так что если у вас есть/создать класс с полями type и Text, вы можете использовать gson или Jackson для разбора строки и получить объекты этого класса. (Вы все еще можете разбить строку с split(",") и разобрать каждую часть в виде отдельной строки JSON)

+0

Одна проблема хотя массив не запускается и не заканчивается на '[', ']' соответственно. –

+0

Вы правы, это строка JSON. Изначально у меня была JSONstring как JSONString = [{"type": "wide", "Text": "cat"}, {"type": "wide", "Text": "dog"}] После выполнения следующего JSONArray arrayKey = новый JSONArray (JSONString); arraykey = {"type": "wide", "Text": "cat"}, {"type": "wide", "Text": "dog"} – jimmy

+0

@salman: Затем используйте парсер JSON, правильный инструмент для работы. –

2

Это должно сделать трюк:

import java.util.regex.*; 

public class Test { 

    public static void main(String[] args) { 

     String input = "{\"type\":\"broad\",\"Text\":\"cat\"}," + 
         "{\"type\":\"broad\",\"Text\":\"dog\"}"; 

     System.out.println(input); 

     Pattern partPattern = Pattern.compile("\\{([^}]*)\\}"); 
     Pattern typePattern = Pattern.compile("\"type\":\"([^\"]*)\""); 
     Pattern textPattern = Pattern.compile("\"Text\":\"([^\"]*)\""); 

     Matcher m = partPattern.matcher(input); 
     while (m.find()) { 
      Matcher typeMatcher = typePattern.matcher(m.group(1)); 
      Matcher textMatcher = textPattern.matcher(m.group(1)); 

      String type = typeMatcher.find() ? typeMatcher.group(1) : "n/a"; 
      String text = textMatcher.find() ? textMatcher.group(1) : "n/a"; 

      System.out.println(type + ", " + text); 
     } 
    } 
} 

Выход (ideone link):

{"type":"broad","Text":"cat"},{"type":"broad","Text":"dog"} 
broad, cat 
broad, dog 
+1

+1 для использования RegExp –

Смежные вопросы