2013-12-11 39 views
1

假設我有一個字符串數組,如: -如何根據這兩個人物採取的java字符串的子串

str[0] = [ name : pankaj ] 
str[1] = [ sex : male ] 
str[2] = [ age : 25 ] 
........... 
........... 

這樣我有一些10元串

現在我有一個函數在我傳遞這個字符串數組和一個重要的例子

getvalue(str,key) 

這裏鍵值名,這是我的函數定義

public String (String[] str , String key){ 
    } 
在這個函數

我需要輸出爲潘卡這是name屬性值 如果我通過一個關鍵的年齡,然後我需要輸出

在這種情況下,該值是不可能的時候返回NULL 。

現在我想問天氣,我們有任何內置的功能,如果沒有,那麼這是更有效的方式來做到這一點。

+0

爲什麼不能在這裏使用'Map >'? –

回答

0

我會掃描整個數組,然後建立與關鍵,在其中值對一個HashMap。您可以輕鬆查詢Map

Map<String, String> map = new HashMap<>(); 
for (String s: str) { 
    String[] split = s.split(" : "); 
    map.put(split[0].substring(3), split[1].substring(0, split[1].length-3); 
} 

然後查詢它只是做:

map.get("key"); 

確切的偏移量substring等需要調整,以得到正確的值了。您也可能想要trim()String

0

雖然地圖要快(或至少更可預測),如果你必須使用一個String [],請嘗試以下方法:

public String getValue(String[] str, String key){ 
    for (String s : str){ 
     String[] pair = s.split(":"); 
     if (pair[0].equals(key)){ 
      return pair[1]; 
     } 
    } 
    return null; 
} 
0

你應該在這種情況下使用地圖。 A Map是一個將鍵映射到值的對象。使用HashMap以下是hashmap的example

0

您可以循環在你的字符串數組,每個條目調用拆分(「:」)

閱讀API here

for (String sEntry : str) { 
    String[] arrSplittedEntries = sEntry.split(":"); 
    if (key.equals(arrSplittedEntries[0])) { 
     return arrSplittedEntries[1]; 
    } 
} 
0

預處理你的字符串輸入到映射做出有效的查詢:

static HashMap<String, String> process(String[] pairs) { 
    HashMap<String, String> map = new HashMap<String, String>(); 
    Pattern p = Pattern.compile("\\w+"); 
    for (String s : pairs) { 
     Matcher m = p.matcher(s); 
     m.find(); 
     String key = m.group(); 
     m.find(); 
     String value = m.group(); 
     map.put(key, value); 
    } 
    return map; 
} 

然後,你可以使用地圖工作

System.out.println(map.get("sex")); // male 
System.out.println(map.get("put")); // null 
相關問題