菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻

Java 正则表达式查找/替换

原创
05/13 14:22 更新

Java正则表达式教程 - Java正则表达式查找/替换

我们可以找到一个模式,并用一些文本替换,替换的文本取决于匹配的文本。

在Java中,我们可以在Matcher类中使用以下两个方法来完成这个任务。

Matcher appendReplacement(StringBuffer sb, String replacement)
StringBuffer appendTail(StringBuffer sb)

例子

假设我们有以下文本。

We have 7 tutorials for Java, 2 tutorials for Javascript and 1 tutorial for Oracle.

我们想在以下规则中将数字更改为文本。

  • 如果多于5,更换多
  • 如果小于5,请更换少量
  • 如果是1,替换为“只有一个”

更换后,上面的句子是

We have many tutorials for Java, a few tutorials for Javascript and only one tutorial for Oracle.

要找到所有数字,我们可以使用 \b\d+\b\b 标记单词边界。

以下代码显示如何使用正则表达式和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());
  }
}

上面的代码生成以下结果。

图片.png

综合评分:9.9 评分 请对本文进行纠错,及学习过程中有困难疑惑可在此进行讨论