gpt4 book ai didi

android - 哈希表和字符串值错误

转载 作者:行者123 更新时间:2023-11-29 17:02:14 25 4
gpt4 key购买 nike

我有一个 master_string,它具有从 pHp 数据库中检索的值。他们是:

{"P":[["5"],["22"]],"AS":[["29"],["34"]],"DT":[["995"],["12"]],"AR":[["23"],["121"]],"SE":[["5"],["22"]]}

删除特殊字符后,字符串现在是:

P:5,22,AS:29,34,DT:995,12,AR:23,121,SE:5,22

现在,当我尝试将其转换为某些值的哈希表时,它应该给我 2 个值,但它只给了我一个。我这部分的代码是

String input = master_string;
Hashtable<String, int[]> result2 = new Hashtable<String, int[]>();
Pattern pattern = Pattern.compile("([A-Z]+):(\\d+(?:\\d+)*)");
Matcher matcher = pattern.matcher(input);

while (matcher.find())
{
String key = matcher.group(1);
String[] fields = matcher.group(2).split(",");

int[] values = new int[fields.length];
for (int pqr=0; pqr<values.length; pqr++)
{
values[pqr] = Integer.parseInt(fields[pqr]);
}
result2.put(key, values);
}

在找到另一个键之前,每个字母都是其值的键。我发现 result2 哈希表只保存第一个值而忽略第二个值,知道为什么会这样吗?

P.S: result2 中的答案应该是这样的:

 P = {5, 22}
AS = {29, 34}
DT = {995, 12}
SE = {5, 22}

最佳答案

您的值包含 , 数字之间,因此您需要考虑使用

([A-Z]+):(\\d+(?:,\\d+)*)

([A-Z]+): : 捕获一个或多个字母并匹配 : 字符

(\\d+(?:,\\d+)*):\\d+一个或多个数字

  • (?:,\\d+)* * 出现零次或多次 ,\\d+

输出:

P [5, 22]
AS [29, 34]
DT [995, 12]
AR [23, 121]
SE [5, 22]

关于android - 哈希表和字符串值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42418023/

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