[英]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.