使用java流获取字符串占位符列表
我有一个包含多个占位符的字符串,如果我们可以借助java streams一次性收集所有占位符,有什么方法吗 输入:使用java流获取字符串占位符列表,java,string,java-8,java-stream,Java,String,Java 8,Java Stream,我有一个包含多个占位符的字符串,如果我们可以借助java streams一次性收集所有占位符,有什么方法吗 输入: <Html> <Table> <TR><TD>||BuySell||</TD></TR> <TR><TD>||ExchangeName||</TD></TR> </Table> </Html> ||买卖|| ||
<Html>
<Table>
<TR><TD>||BuySell||</TD></TR>
<TR><TD>||ExchangeName||</TD></TR>
</Table>
</Html>
||买卖||
||交换胺||
输出:
<Html>
<Table>
<TR><TD>||BuySell||</TD></TR>
<TR><TD>||ExchangeName||</TD></TR>
</Table>
</Html>
列表占位符=[BuySell,ExchangeName]
这可以使用助手函数来完成
BiFunction<Matcher, Function<Matcher, Object>, Collection<?>> placeHolderExtractor = (mch, extracter) -> {
List<Object> list = new ArrayList<>();
while(mch.find()) {
list.add(extracter.apply(mch));
}
return list;
};
String htmlStr = "<Html> <Table> <TR><TD>||BuySell||</TD></TR> <TR><TD>||ExchangeName||</TD></TR> </Table></Html>";
String regex = "(\\|\\|)([\\w]+)\\1";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(htmlStr);
List<String> placeHolderList = placeHolderExtractor.apply(matcher, macher -> macher.group(2))
.stream()
.map(String::valueOf)
.collect(Collectors.toList());
BiFunction这可以使用helper函数来完成
BiFunction<Matcher, Function<Matcher, Object>, Collection<?>> placeHolderExtractor = (mch, extracter) -> {
List<Object> list = new ArrayList<>();
while(mch.find()) {
list.add(extracter.apply(mch));
}
return list;
};
String htmlStr = "<Html> <Table> <TR><TD>||BuySell||</TD></TR> <TR><TD>||ExchangeName||</TD></TR> </Table></Html>";
String regex = "(\\|\\|)([\\w]+)\\1";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(htmlStr);
List<String> placeHolderList = placeHolderExtractor.apply(matcher, macher -> macher.group(2))
.stream()
.map(String::valueOf)
.collect(Collectors.toList());
bifunction是HTML中的输入,您首先需要解析它?@Sweeper,谢谢您的回复。不,这是一根绳子。我已经将固定的html模板分解为字符串的不同子模板。你有吗?在我看来,您在这里显示的输入像是一个HTML字符串,而不是“字符串的不同子模板”,不管这意味着什么。你能澄清一下吗?@sweeper,谢谢你的耐心。我的意思是输入是一个字符串。是的,我现在知道输入是一个字符串,但它是HTML吗?如果是这样,您应该使用HTML解析器。您使用的是HTML解析器吗?输入是HTML格式的,您首先需要对其进行解析吗?@Sweeper,谢谢您的回复。不,这是一根绳子。我已经将固定的html模板分解为字符串的不同子模板。你有吗?在我看来,您在这里显示的输入像是一个HTML字符串,而不是“字符串的不同子模板”,不管这意味着什么。你能澄清一下吗?@sweeper,谢谢你的耐心。我的意思是输入是一个字符串。是的,我现在知道输入是一个字符串,但它是HTML吗?如果是这样,您应该使用HTML解析器。您正在使用HTML解析器吗?