2012-10-19 123 views
0

我的問題:這是非常具體的。我試圖想解析以下文本的最簡單的方法:如何解析name = value ^^ name = value ^^ name = value

^^domain=domain_value^^version=version_value^^account_type=account_type_value^^username=username_value^^password=password_value^^type=type_value^^location=location_value^^id=xxx^^cuid=cuid_value^^ 

它會出現,每次酷似。一些要求:

  • 並非所有這些鍵值對都會出現在每次。
  • 他們可能會以不同的順序

我正在尋找的代碼是這樣的:

private String[] getKeyValueInfo(String allStuff) { 
    String domain = someAwesomeMethod("domain", allStuff); 
    String version = someAwesomeMethod("version", allStuff); 
    String account_type = someAwesomeMethod("account_type", allStuff); 
    String username = someAwesomeMethod("username", allStuff); 
    String password = someAwesomeMethod("password", allStuff); 
    String type = someAwesomeMethod("password", allStuff); 
    String location = someAwesomeMethod("location", allStuff); 
    String id = someAwesomeMethod("id", allStuff); 
    String cuid = someAwesomeMethod("cuid", allStuff); 
    return new String[] {domain, version, account_type, username, password, type, location, id, cuid}; 
} 

什麼我不知道是什麼someAwesomeMethod(String key, String allStuff)應包含的內容。

我在想什麼:事情是這樣的:

private String someAwesomeMethod(String key, String allStuff) { 
    Pattern patt = Pattern.compile("(?i)^^" + key + "=(.*?)^^", Pattern.DOTALL); 
    Matcher matcher = patt.matcher(allStuff); 
    if (matcher.find()) { 
    return matcher.group(1); 
    } 
    return null; 
} 

有什麼不妥:

我擔心它會是如果我不得不有點慢/累贅做這個很多。所以我正在尋找任何提示/建議。

+1

我把它['String.split()'](http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String .html#split%28java.lang.String%29)不會漂浮你的船嗎? –

+0

@RobertHarvey'.split()'仍然使用正則表達式,你仍然必須解析出鍵和參數。 – NullUserException

+0

沒關係。只需在'「=」'上重新分割每個分割。 –

回答

5

工作,如果你必須這樣做了很多,我會做一個地圖,沿着

Map<String, String> m = new HashMap<String, String>(); 
for (String s : stuff.split("\\^\\^")) // caret needs escaping 
{ 
    String[] kv = s.split("="); 
    m.put(kv[0]) = kv[1]; 
} 

東西線再到查找你剛剛做的一個鍵m.get("key")

0

String.split()將爲該

strVar = /* Your big long string */ 
String[] vars = strVar.split("\\^\\^"); // needs escaping 
相關問題