繁体   English   中英

Java String 数组解析和获取数据

[英]Java String array parsing and getting data

字符串输入数据是

{phone=333-333-3333, pr_specialist_email=null, sic_code=2391, status=ACTIVE, address1=E.BALL Drive, fax=333-888-3315, naics_code=325220, client_id=862222, bus_name=ENTERPRISES, address2=null, contact=BYRON BUEGE}

键和值将在数组中增加。 我想获取每个键的值,即 myString.get("phone") 应该返回 333-333-3333 我使用的是 Java 1.7,是否有任何工具可以使用它来解析数据并获取值。

我的一些输入具有类似的值,

{phone=000000002,Desc="Light PROPERTITES, LCC", Address1="C/O ABC RICHARD",Address2="6508 THOUSAND OAKS BLVD.,",Adress3="SUITE 1120",city=MEMPHIS,state=TN,name=,dob=,DNE=,}

逗号分隔符在这里不起作用

这是一个简单的函数,可以完全满足您的要求。 它将您的字符串作为输入并返回一个包含所有键和值的 Hashmap。

private HashMap<String, String> getKeyValueMap(String str) {

    // Trim the curly ({}) brackets
    str = str.trim().substring(1, str.length() - 1);

    // Split all the key-values tuples
    String[] split = str.split(",");

    String[] keyValue;
    HashMap<String, String> map = new HashMap<String, String>();
    for (String tuple : split) {

        // Seperate the key from the value and put them in the HashMap
        keyValue = tuple.split("=");
        map.put(keyValue[0].trim(), keyValue[1].trim());

    }

    // Return the HashMap with all the key-value combinations
    return map;

}

注意:如果任何键名或值中存在“=”或“,”字符,这将不起作用。

要获得任何价值,您所要做的就是:

HashMap<String, String> map = getKeyValueMap(...);
String value = map.get(key);

您可以自己编写一个简单的解析器。 为简洁起见,我将在此代码中排除错误检查。

您应该首先删除 { 和 } 字符,然后按 ', ' 拆分,然后按 = 拆分每个结果字符串。 最后将结果添加到地图中。

String input = ...;
Map<String, String> map = new HashMap<>();
input = input.substring(1, input.length() - 1);
String elements[] = input.split(", ");
for(String elem : elements)
{
    String values[] = elem.split("=");
    map.put(values[0].trim(), values[1].trim());
}

然后,要检索一个值,只需执行

String value = map.get("YOURKEY");

您可以使用“Google Core Libraries for Java API” MapSplitter来完成您的工作。
首先使用 substring 方法删除花括号,然后使用下面的代码来完成你的工作。

Map<String, String> splitKeyValues = Splitter.on(",")
    .omitEmptyStrings()
    .trimResults()
    .withKeyValueSeparator("=")
    .split(stringToSplit);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM