我有String
和List<String>
。我希望从String
中提取List<String
内容,包括前后两个字符。
我查看了StackOverflow
的示例。没有分隔符,没有分界表明匹配是以任何形式描绘的。我已经使用RegEx询问并回复了答案,并认为可能是这样做的,但我的问题是怎样的。
如果我有String toParse = "Parse this to grab the &@ClaimNumber@& variable";
而我的List<String>
包含ClaimNumber
,是否有面向对象的解决方案?
答案 0 :(得分:1)
以下方法将在suggestion by CollinD之后添加正确引用动态搜索值:
private static List<String> extract(String input, List<String> keywords) {
StringJoiner regex = new StringJoiner("|");
for (String keyword : keywords)
regex.add(".." + Pattern.quote(keyword) + "..");
List<String> result = new ArrayList<>();
for (Matcher m = Pattern.compile(regex.toString()).matcher(input); m.find(); )
result.add(m.group());
return result;
}
测试
System.out.println(extract("Parse this to grab the &@ClaimNumber@& variable",
Arrays.asList("ClaimNumber")));
System.out.println(extract("The quick brown fox jumps over the lazy dog",
Arrays.asList("fox", "i")));
输出
[&@ClaimNumber@&]
[quick, n fox j]