2015-01-03 27 views
0

有關如何在Java解析字符串快速的問題:解析Java中的String中提取數據

我有這個字符串:"name: Banana cake, made with sugar, glycemicindex: 47",我試圖"name:"後提取(1)將字符串和前", glycemicindex: 47"(所以字符串"Banana cake, made with sugar")和(2)"glycemicindex:"之後的字符串(所以字符串47)。

本質上我有一堆數據點的格式爲"name: [name data], glycemicindex: [glycemicindex data]",我想提取名稱數據和glycemicindex數據並將它們存儲在列表中。

有關如何做到這一點的任何想法?謝謝!我感謝所有幫助:)

+0

我有一個主意 - 用正則表達式。 – MightyPork

+1

爲什麼不簡單地用'''分割,後用':'... –

+0

@AlexandreLavoie根據例子,'''可以是值的一部分,所以你不能用它作爲字段分隔符。 –

回答

3

如果這意味着要快&骯髒的黑客,你可以使用正則表達式:

String text = "name: Banana cake, made with sugar, glycemicindex: 47"; 
Pattern pattern = Pattern.compile("name: (.*) glycemicindex: (\\d+)"); 
Matcher matcher = pattern.matcher(text); 
if (matcher.matches()) { 
    System.out.println(matcher.group(1)); 
    System.out.println(matcher.group(2)); 
} 

如果這意味着要強大的系統的一部分,你應該獲得精確規定這種格式並相應地解析它(不一定用正則表達式)。

0

這並不是說其他​​人都錯了,只是爲了達到相同的另一種方法 -

提供的數據格式是name:<data1>, glycemicindex:<data2>

String message="name: Banana cake, made with sugar, glycemicindex: 47"; 
String []splits = message.split(", glycemicindex:"); 
String name = (splits[0].replace("name:","").trim()); 
String glycemicIndex = splits[1].trim();