Java 解析映射中具有key=value对的字符串?
我有以下字符串,格式为Java 解析映射中具有key=value对的字符串?,java,string,split,guava,splitter,Java,String,Split,Guava,Splitter,我有以下字符串,格式为key1=value1,key2=value2,我需要将其加载到映射(map)中,作为key=value,所以我需要在逗号上拆分,,然后加载cossn作为键和0其值 String payload = "cossn=0, itwrqm=200006033213"; Map<String, String> holder = Splitter.on(",").trimResults().withKeyValueSeparator("=").spli
key1=value1,key2=value2
,我需要将其加载到映射(map)
中,作为key=value
,所以我需要在逗号上拆分,
,然后加载cossn
作为键和0
其值
String payload = "cossn=0, itwrqm=200006033213";
Map<String, String> holder =
Splitter.on(",").trimResults().withKeyValueSeparator("=").split(payload);
我怎样才能使其适用于上述情况?对于上述情况,
键
将为abc
,值应为hello/=world
。可以这样做吗?您可以添加一个数字来表示需要多少拆分,只需添加一个2即可
import java.util.HashMap;
public class HelloWorld{
public static void main(String []args){
HashMap<String, String> holder = new HashMap();
String payload = "cossn=0, abc=hello/=world";
String[] keyVals = payload.split(", ");
for(String keyVal:keyVals)
{
String[] parts = keyVal.split("=",2);
holder.put(parts[0],parts[1]);
}
}
}
import java.util.HashMap;
公共类HelloWorld{
公共静态void main(字符串[]args){
HashMap holder=新的HashMap();
String payload=“cossn=0,abc=hello/=world”;
字符串[]keyVals=payload.split(“,”);
用于(字符串keyVal:keyVals)
{
String[]parts=keyVal.split(“=”,2);
(第[0]部分、第[1]部分);
}
}
}
您可以使用拆分器直接执行同样的操作:
Map<String, String> result = Splitter.on(',')
.trimResults()
.withKeyValueSeparator(
Splitter.on('=')
.limit(2)
.trimResults())
.split(input);
Map result=Splitter.on(','))
.trimpresults()
.withKeyValueSeparator(
Splitter.on('='))
.限额(2)
.trimResults())
.拆分(输入);
你怎样才能使什么工作准确?拆分器?JAVA有很多不同的方法可以做到这一点,但可能没有单行函数字符串。将2添加到拆分调用应该可以工作。将2添加到拆分后,我看到以下错误类型拆分器中的方法拆分(CharSequence)。MapSplitter不适用于参数(String,int)
@user1950349:littlecegian指的是String.split
,您没有使用它(但Tomer在下面的回答中使用了它)MapSplitter.split
没有任何需要多次拆分的重载,但是您可以使用Splitter
上的limit()
API获得相同的效果。这是我看到的类型拆分器中的方法split(CharSequence)错误。MapSplitter不适用于参数(String,int)
。你考虑过使用循环吗?你能提供一个例子吗?@user1950349查看我的编辑我刚刚尝试了这个,它在这一行holder.put(parts[0],parts[1])上给出了java.lang.ArrayIndexOutOfBoundsException
代码>。知道怎么了吗?
Map<String, String> result = Splitter.on(',')
.trimResults()
.withKeyValueSeparator(
Splitter.on('=')
.limit(2)
.trimResults())
.split(input);