0

私の質問:それは非常に具体的です。次のテキストを解析する最も簡単な方法を考えようとしています。

^^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;
}

それのどこが悪いんだい:

これをたくさんやらなければならないのなら、少し遅くて面倒になるのではないかと心配しています。だから私はヒント/提案を探しています。

4

2 に答える 2

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")

于 2012-10-19T22:47:20.250 に答える
0

String.split()はそのために機能します

strVar = /* Your big long string */
String[] vars = strVar.split("\\^\\^"); // needs escaping
于 2012-10-19T22:47:06.100 に答える