gpt4 book ai didi

java - 使用 Java String split() 很简单 "parser"

转载 作者:行者123 更新时间:2023-12-01 09:58:29 25 4
gpt4 key购买 nike

[{Action=GoTo,Title=0001000a,Page=1 XYZ 7 797 null},{Action=GoTo,Title=0001000b,Page=3 XYZ 7 797 null},{Action=GoTo,Title= 0001000c,页面=5 XYZ 7 797 null},{Action=GoTo,标题=0001000d,页面=7 XYZ 7 797 null}]

我试图找到解析上述字符串的最简单方法,我需要的只是“标题”和“页面”。所以我想要一个简单的 String[] = {"0001000a","1","0001000b","3"...}

str.split("(\\[|, )\\{Action=GoTo, Title=|, Page=| XYZ \\d+ \\d+ null\\}");

我已经在一些在线js正则表达式测试器中测试了正则表达式,看起来不错,但是结果 String[] = {"0001000a","1","","0001000b","3","". ..},每个页面值后面有一个额外的空字符串。

str.split("\\[|\\{Action=GoTo, Title=|, Page=| XYZ \\d+ \\d+ null\\}(, |\\])");

此生成 String[] = {"","0001000a","1","","0001000b","3"...},即每个标题值前面的空字符串。

似乎java不喜欢“,”作为正则表达式,或者它可能是Java String.split()的工作方式!?

最佳答案

使用普通正则表达式而不是 split() 可以轻松实现这一点

String line = "[{Action=GoTo, Title=0001000a, Page=1 XYZ 7 797 null}, {Action=GoTo, Title=0001000b, Page=3 XYZ 7 797 null}, {Action=GoTo, Title=0001000c, Page=5 XYZ 7 797 null}, {Action=GoTo, Title=0001000d, Page=7 XYZ 7 797 null}]";
ArrayList<String> list = new ArrayList<>();
Pattern pattern = Pattern.compile("Title=([^,]+), Page=([^}]+)}");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
list.add(matcher.group(1));
list.add(matcher.group(2));
}
String[] foo = list.toArray(new String[list.size()]);

关于java - 使用 Java String split() 很简单 "parser",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36995169/

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