我有一个字符串,其中有多个值。键和值之间用*
分隔,整个值以$
分隔。
以下是示例:
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
现在我想把它的值放在键值对中的hashmap中。
下面是我正在使用的代码,但没有将其转换为hashmap的工作。请指导。
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
String []tmp = StringUtils.split(agf,'*');
for (String v : tmp) {
String[] t = StringUtils.split(v,'$');
map.put(t[0], t[1]);
}
答案 0 :(得分:1)
查看您的示例字符串,您应首先在$
上拆分(以获取单个键值对),然后在*
上拆分(以分隔键和值)
答案 1 :(得分:1)
import java.util.HashMap;
import java.util.Map;
public class Parse{
public static void main(String ...args){
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
String [] split = agf.split("\\$");
Map<String,String> map = new HashMap<String,String>();
for(String temp : split){
String [] tempo = temp.split("\\*");
map.put(tempo[0],tempo[1]);
}
for(String mapkeys : map.keySet()){
System.out.println(mapkeys+" ::: "+map.get(mapkeys));
}
}
}
如果给定键有多个值,请使用:
public static void main(String ...args){
String agf = "abc*pqr*gas$sfd*ghn$atr*mnb$tre*fgt";
String [] split = agf.split("\\$");
Map<String,String> map = new HashMap<String,String>();
for(String temp : split){
String [] tempo = temp.split("\\*");
StringJoiner sj = new StringJoiner(",");
for(int i = 1; i < tempo.length;i++){
sj.add(tempo[i]);
}
String value = sj.toString();
map.put(tempo[0],value);
}
for(String mapkeys : map.keySet()){
System.out.println(mapkeys+" ::: "+map.get(mapkeys));
}
}
希望您找到这个有用的
答案 2 :(得分:0)
Switch&#39; *&#39;和&#39; $&#39;。
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
String []tmp = StringUtils.split(agf,'$');
for (String v : tmp) {
String[] t = StringUtils.split(v,'*');
map.put(t[0], t[1]);
}
答案 3 :(得分:0)
使用string.split("//$")
和string.split("//*")
作为用例的正则表达式。
完整代码:
String str = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
String[] entries = str.split("\\$");
Map<String, String> map = new HashMap<String, String>();
for (int i=0; i<entries.length; i++) {
String[] entry = entries[i].split("\\*");
map.put(entry[0], entry[1]);
}
System.out.println("Entries are -> " + map.entrySet());
答案 4 :(得分:0)
String agf = "abc*pqr$sfd*ghn$atr*mnb$tre*fgt";
\\next array will contain such elements: "abc*pqr", "sfd*ghn", "atr*mnb", "tre*fgt"
String[] pairs = agf.split("\\$");
Map<String, String> map = new HashMap();
for (String pair: pairs) {
\\in first iteration next array will contain such elements: "abc", "pqr"
String[] t = pair.split("\\*");
\\just fill out map with data
map.put(t[0], t[1]);
}