【发布时间】:2018-02-20 07:43:05
【问题描述】:
在编写具有查找和替换功能的文本编辑器时,用户可以多次搜索然后替换。在 Java 中,搜索部分非常简单:
Pattern pattern = Pattern.compile(userInput);
...
String line = ...
Matcher matcher = pattern.matcher(line);
int from = 0;
while (from < line.length() && matcher.find(from)) {
int start = matcher.start();
int length = matcher.end() - start;
// pseudo-code:
if (askUser()) {
return ...
}
from = start + 1;
}
但是如何处理第 n 次匹配的替换呢? Matcher 有 replaceAll 和 replaceFirst。第一个显然不适合,但对于replaceFirst,文档说:
用给定的替换字符串替换与模式匹配的输入序列的第一个子序列。 此方法首先重置此匹配器。然后它会扫描输入序列以查找模式的匹配项。
粗体句让我担心它是否适合这里。我需要一些东西来用某种模式替换当前的匹配。
【问题讨论】: