java 字符串练习 敏感词替换


以下是一个Java程序,可以用于将输入文本中的敏感词替换成指定的字符串:

javaCopy codeimport java.util.*;

public class ReplaceSensitiveWords {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 假设有以下敏感词
        String[] sensitiveWords = {"敏感词1", "敏感词2", "敏感词3"};

        System.out.print("请输入文本:");
        String text = sc.nextLine();

        // 将敏感词替换成指定字符串
        for (String word : sensitiveWords) {
            text = text.replaceAll(word, "***");
        }

        System.out.println("替换后的文本:" + text);
    }
}

在该程序中,我们首先定义了一个包含敏感词的数组 sensitiveWords。然后,程序会从用户输入中获取一段文本,并使用 replaceAll() 方法将其中的敏感词替换成指定的字符串 "***"。最后,程序输出替换后的文本。

这只是一个简单的示例程序,实际应用中可能需要考虑更多的情况,例如敏感词的匹配规则、替换字符串的内容等。

如果需要更加灵活和可扩展的敏感词替换功能,可以使用正则表达式。下面是一个示例代码,演示了如何使用正则表达式替换敏感词:

javaCopy codeimport java.util.*;
import java.util.regex.*;

public class ReplaceSensitiveWords {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 假设有以下敏感词
        String[] sensitiveWords = {"敏感词1", "敏感词2", "敏感词3"};

        System.out.print("请输入文本:");
        String text = sc.nextLine();

        // 使用正则表达式替换敏感词
        Pattern pattern = Pattern.compile(String.join("|", sensitiveWords));
        Matcher matcher = pattern.matcher(text);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            String word = matcher.group();
            matcher.appendReplacement(sb, "***");
        }
        matcher.appendTail(sb);

        System.out.println("替换后的文本:" + sb.toString());
    }
}

在该程序中,我们首先使用 String.join() 方法将敏感词数组中的词用 | 符号连接起来,形成一个正则表达式。然后,我们使用 Pattern 类的 compile() 方法编译正则表达式,并使用 Matcher 类的 matcher() 方法在文本中查找匹配项。在循环中,我们使用 Matcher 类的 appendReplacement() 方法将匹配到的敏感词替换成指定的字符串 "***",并将结果存入 StringBuffer 对象中。最后,我们使用 Matcher 类的 appendTail() 方法将剩余的文本添加到 StringBuffer 对象中,并输出替换后的文本。

使用正则表达式进行敏感词替换具有更高的灵活性和可扩展性,可以更加准确地匹配敏感词,同时也可以自定义替换字符串的内容和格式。但需要注意的是,正则表达式的语法比较复杂,需要仔细理解和使用。


原文链接:codingdict.net