2013-02-19 3 views
-2

Мне нужно проанализировать несколько строк типа кода JSON, приведенного ниже. Мне нужно удалить все запятые (,), которые находятся внутри квадратных скобок. То есть ["Cheesesteaks","Sandwiches", "Restaurants"] становится ["Cheesestakes""Sandwiches""Restaurants"]. Мне нужно сохранить все остальные запятые, как есть.Код соответствия шаблону в java

Другой пример: ["Massachusetts Institute of Technology", "Harvard University"] станет ["Massachusetts Institute of Technology""Harvard University"], сохраняя все остальные запятые.

{"business_id": "EjgQxDOUS-GFLsNxoEFJJg", "full_address": "Liberty Place\n1625 Chestnut St\nMantua\nPhiladelphia, PA 19103", "schools": ["Massachusetts Institute of Technology", "Harvard University"], "open": true, "categories": ["Cheesesteaks", "Sandwiches", "Restaurants"], "photo_url": "http://s3-media4.ak.yelpcdn.com/bphoto/SxGxfJGy9pXRgCNHTRDeBA/ms.jpg", "city": "Philadelphia", "review_count": 43, "name": "Rick's Steaks", "neighborhoods": ["Mantua"], "url": "http://www.yelp.com/biz/ricks-steaks-philadelphia", "longitude": -75.199929999999995, "state": "PA", "stars": 3.5, "latitude": 39.962440000000001, "type": "business"} 

Может кто-нибудь, пожалуйста, помогите мне найти регулярное выражение, соответствующее этому шаблону?

ответ

0

Попробуйте это:

Pattern outer = Pattern.compile("\\[.*?\\]"); 
Pattern inner = Pattern.compile("\"\\s*,\\s*\""); 
Matcher mOuter = null; 
Matcher mInner = null; 

mOuter = outer.matcher(jsonString); 
StringBuffer sb = new StringBuffer(); 

while (mOuter.find()) { 
    mOuter.appendReplacement(sb, ""); 
    mInner = inner.matcher(mOuter.group()); 
    while (mInner.find()) { 
     mInner.appendReplacement(sb, "\"\""); 
    } 
    mInner.appendTail(sb); 
} 
mOuter.appendTail(sb); 

System.out.println(sb.toString()); 

И заменить jsonString с входом.

0

Это должна быть очень простая замена.

String in = "[\"Cheesesteaks\",\"Sandwiches\", \"Restaurants\"]"; 
String out = in.replaceAll(", ?", ""); 
System.out.println(out); 

дает

["Cheesesteaks""Sandwiches""Restaurants"] 
Смежные вопросы