2015-05-25 161 views
0

特定單詞的屬性值我有一個包含一個鍵及其值,其中它的值是一個字符串包含許多值的屬性文件:閱讀的java

transmit=[D-1]0.0 [D-2]0.0 [D-3]0.039236154 

key=transmit 

value=[D-1]0.0 [D-2]0.0 [D-3]0.039236154 

這意味着,發射是在[D-1] Document 1與價值0.0,並在[D-2] Document 2與價值0.0,並[D-3] Document 3與價值0.039236154

我的問題是,我怎麼能讀[D-3]並給予其值分別爲0.039236154

+0

份額,你做了什麼。 –

+0

沒什麼,因爲我沒有任何想法@DilipKumar – nameisme

+0

一個字;正則表達式。 –

回答

0

要獲得[d-1],[d-2],等等,你會首先從文件需要read the lines值。

如果該行以string.startsWith(""transmit");開始,那麼你使用string.split("=")分割字符串。用等號拆分它,因爲這是分割值和單詞「傳送」。

分割一個字符串會返回一個字符串數組,您將需要索引1(string.split(「=」)1)以獲得[D-1]0.0 [D-2]0.0 [D-3]0.039236154。注意:確保分割的長度至少爲2以避免數組越界異常。

現在你有字符串[D-1]0.0 [D-2]0.0 [D-3]0.039236154。用這個分隔空間。然後,你可以遍歷你從分割中獲得的數組,並將每個字符串分割爲\\]以獲得[D-1]和0.0分隔。注意:您將在括號前使用雙反斜槓,因爲括號是正則表達式中的保留字符。

當你分割這些值時,你可以把它們放到一個哈希映射表中並以[D-x]作爲關鍵字。

下面是示例代碼一旦被從文件中讀取:

String start = "transmit=[D-1]0.0 [D-2]0.0 [D-3]0.039236154"; 
start = start.split("=")[1]; 
String[] split = start.split(" "); 
HashMap<String, Double> transmitValues = new HashMap<String, Double>(); 
for(String str : split){ 
    String[] s = str.split("\\]"); 
    transmitValues.put(s[0] + "]", Double.parseDouble(s[1])); 
} 
0

從上述value我理解您的值由space分離。

以下代碼段將幫助您。

String[] tokens = transmit.split(" "); 
Map<String, String> valueMap = new HashMap<>(); 
Pattern pattern = Pattern.compile("\\[((\\w-\\d))\\]([\\d.]*)"); 
for (final String token : tokens) { 
    Matcher matcher = pattern.matcher(token); 
    if (matcher.matches()) { 
     valueMap.put(matcher.group(1), matcher.group(3)); 
    } 
} 
// access values using valueMap.get("D-1")