我們可以找到一個(gè)模式,并用一些文本替換,替換的文本取決于匹配的文本。
在Java中,我們可以在Matcher類中使用以下兩個(gè)方法來完成這個(gè)任務(wù)。
Matcher appendReplacement(StringBuffer sb, String replacement) StringBuffer appendTail(StringBuffer sb)
假設(shè)我們有以下文本。
We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.
我們想在以下規(guī)則中將數(shù)字更改為文本。
更換后,上面的句子是
We have many tutorials for Java, a few tutorials for Javascript and only one tutorial for Oracle.
要找到所有數(shù)字,我們可以使用 \b\d+\b
。 \b
標(biāo)記單詞邊界。
以下代碼顯示如何使用正則表達(dá)式和appendReplacement()和appendTail()方法
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String regex = "\\d+";
StringBuffer sb = new StringBuffer();
String replacementText = "";
String matchedText = "";
String text = "We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
while (m.find()) {
matchedText = m.group();
int num = Integer.parseInt(matchedText);
if (num == 1) {
replacementText = "only one";
} else if (num < 5) {
replacementText = "a few";
} else {
replacementText = "many";
}
m.appendReplacement(sb, replacementText);
}
m.appendTail(sb);
System.out.println("Old Text: " + text);
System.out.println("New Text: " + sb.toString());
}
}
上面的代碼生成以下結(jié)果。
更多建議: