我有一份清单
List.of(
"ParamField(paramName=Thomas, paramValue=Admitted)",
"ParamField(paramName=Martin, paramValue=Discarded)",
"ParamField(paramName=Steve, paramValue=Admitted)"
);
我如何迭代列表并解析所有字符串,以便在迭代结束时我可以有一个包含如下内容的字符串
String s = "Thomas-Admitted;Marting-Discarded;Steve-Admitted";
“ParamField(paramName=emmeline tame-ivory@tiwwmaawnc.co.uk,paramValue=允许)”
这很容易通过正则表达式捕获组来实现。您的模式将是"ParamField\\(paramName=(. ), parValue=(.)\\)"
,然后您只需匹配并获取group(1)
和group(2)
。
提取后,只需在上使用
或类似的。StringJoiner
创建字符串;
可能看起来像这样:
Pattern pattern = Pattern.compile("ParamField\\(paramName=(.+), paramValue=(.+)\\)");
StringJoiner sj = new StringJoiner(";");
for (String paramField : paramFields) {
Matcher matcher = pattern.matcher(paramField);
if (!matcher.find()) {
throw new IllegalArgumentException("Bad input format");
}
String name = matcher.group(1);
String value = matcher.group(2);
sj.add(name + "-" + value);
}
String result = sj.toString();
理想情况下,您可以使用一些OOP并在该字符串上使用工厂方法创建一个漂亮的记录ParamField
,然后使用它的getter。这样更容易继续处理数据,以防您需要对其做更多事情。
record ParamField(String name, String value) {
private static Pattern pattern = Pattern.compile(
"ParamField\\(paramName=(.+), paramValue=(.+)\\)");
static ParamField of(String line) {
Matcher matcher = pattern.matcher(line);
if (!matcher.find()) {
throw new IllegalArgumentException("Bad input format");
}
return new ParamField(matcher.group(1), matcher.group(2));
}
}
用法如下
List<ParamField> paramFields = lines.stream()
.map(ParamField::of)
.toList();
然后处理这些数据。例如,构建字符串:
String result = paramFields.stream()
.map(paramField -> paramField.name() + "-" + paramField.value())
.collect(Collectors.joining(";"));
如何将过滤器列表拆分为单个过滤器元件?split2String在线程“main”java.util.regex中导致:异常。PatternSyntaxException:索引10或(|和)附近的未闭合组(
问题内容: 如何在JavaScript中使用多个分隔符拆分字符串?我正在尝试在逗号和空格上进行拆分,但是AFAIK,JS的拆分功能仅支持一个分隔符。 问题答案: 传递正则表达式作为参数: 编辑添加: 您可以通过选择数组的长度减去1来获得最后一个元素: …,如果模式不匹配:
在上面的示例代码中,我想根据标题拆分文本。我想通过正则表达式确定这些标题(因为可能有同义词)但是通常返回NoneType。这显然会导致错误。如果我添加一个If条件来检查我是否不是,那么错误就会消失,但字典最终会丢失大量数据。 有人知道解决这个问题的方法吗?或者知道实现同样的事情的方法吗? 请记住,以上只是一个例子。我需要使用这个为简历/简历,因此布局和标题可以略有不同,这取决于使用的简历。
问题内容: 我想用和分开 因此处理后应该得到: 问题答案: 对更新问题的更新答案:
问题内容: 我在网上找到了一些答案,但是我没有使用正则表达式的经验,我相信这里是需要的。 我有一个字符串,需要用分隔 或也就是说,它必须是分号或逗号后跟一个空格。没有尾随空格的单个逗号应保持不变 示例字符串: 应该拆分为包含以下内容的列表: 问题答案: 幸运的是,Python内置了:) 更新: 在你的评论之后:
我正在尝试从Cisco IOS配置解析以下命令: