gpt4 book ai didi

java - 如何在java中分割字符串并存储到字符串的hashmap中

转载 作者:行者123 更新时间:2023-12-01 07:17:38 24 4
gpt4 key购买 nike

我想分割下面的字符串

G04:AMPARAMS|DCode=50|XSize=66mil|YSize=66mil|CornerRadius=0mil|HoleSize=0mil|Usage=FLASHONLY|Rotation=0.000|XOffset=0mil|YOffset=0mil|HoleType=Round|Shape=Octagon|*

我首先将代码从 '|' 管道符号中分离出来,然后再次从 '=' 等号中分离出来,但我在这里面临的问题是如何存储 HashMap 中的值,因为它们在循环中,所以我无法将其存储在 HashMap 中。任何可能的解决方案都会被应用。

String[] temp=line.split("\\|");
for(String p:temp){
HashMap<String,String>attributes=new HashMap<String,String>();
String[] key =p.split("\\=");

for(String tmp:key){
//System.out.println(tmp);
attributes.put();
}

最佳答案

没有流媒体:

public static Map<String, String> split(String str) {
final Pattern sep = Pattern.compile("\\s*\\|\\s*");
final Pattern eqSep = Pattern.compile("(?<key>[^=\\s]+)\\s*=\\s*(?<value>[^=]+)");

Map<String, String> map = new HashMap<>();

for (String part : sep.split(str)) {
Matcher matcher = eqSep.matcher(part);

if (matcher.matches())
map.put(matcher.group("key"), matcher.group("value"));
}

return map;
}

使用流:

public static Map<String, String> split(String str) {
final Pattern sep = Pattern.compile("\\s*\\|\\s*");
final Pattern eqSep = Pattern.compile("(?<key>[^=\\s]+)\\s*=\\s*(?<value>[^=]+)");

return sep.splitAsStream(str)
.map(eqSep::matcher)
.filter(Matcher::matches)
.collect(Collectors.toMap(matcher -> matcher.group("key"), matcher -> matcher.group("value")));
}

关于java - 如何在java中分割字符串并存储到字符串的hashmap中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53760757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com