gpt4 book ai didi

StringBuilder 的 Java Matcher.appendReplacement() 和 Matcher.appendTail()?

转载 作者:搜寻专家 更新时间:2023-11-01 01:32:20 27 4
gpt4 key购买 nike

是否有 Matcher.appendReplacement() 和 Matcher.appendTail() 的替代方案,它采用 StringBuilder 而不是 StringBuffer ?

是否有一种“简单”的方法来“转换”使用 StringBuffer 调用 Matcher 的 Java 代码以改为使用 StringBuilder?

谢谢,詹姆斯

最佳答案

简短的回答,还没有。直到 Java 9。在 Java 9 中,Matcher.appendReplacement(StringBuilder,String)Matcher.appendTail(StringBuilder) 方法被添加到 API 中。 .

到那时,如果您不需要在替换字符串中进行组替换,那么我仍然觉得这个解决方案“简单”:

Matcher m = PATTERN.matcher(s);
StringBuilder sb = new StringBuilder();
int pos = 0;
while(m.find()) {
sb.append(s, pos, m.start());
pos = m.end();
sb.append("replacement")
}
sb.append(s, pos, s.length());

即使你需要组替换,它也会变得“适度”困难:

Matcher m = PATTERN.matcher(s);
StringBuilder sb = new StringBuilder();
int pos = 0;
while(m.find()) {
sb.append(s, pos, m.start());
pos = m.end();
if (m.start(1) >= 0) { // check if group 1 matched
sb.append(s, m.start(1), m.end(1)); // replace with group 1
}
}
sb.append(s, pos, s.length());

关于StringBuilder 的 Java Matcher.appendReplacement() 和 Matcher.appendTail()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38376584/

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