阅读量:0
要在Java中实现文本过滤,可以使用JTextArea的Document类来实现。以下是一个简单的示例代码,演示如何过滤掉文本中的敏感词汇:
import javax.swing.*; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; public class FilteredTextArea extends JTextArea { private String[] sensitiveWords = {"bad", "evil", "hate"}; public FilteredTextArea() { setDocument(new FilteredDocument()); } private class FilteredDocument extends PlainDocument { @Override public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { if (str == null) { return; } for (String word : sensitiveWords) { if (str.toLowerCase().contains(word)) { JOptionPane.showMessageDialog(null, "The word '" + word + "' is not allowed."); return; } } super.insertString(offs, str, a); } } public static void main(String[] args) { JFrame frame = new JFrame("Filtered Text Area"); FilteredTextArea textArea = new FilteredTextArea(); frame.add(new JScrollPane(textArea)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); frame.setVisible(true); } }
在这个示例代码中,我们首先创建了一个FilteredTextArea类,继承自JTextArea,并在构造方法中设置了一个敏感词汇数组。然后,我们定义了一个内部类FilteredDocument,继承自PlainDocument,并重写了insertString方法,在该方法中检查插入的字符串是否包含敏感词汇,如果包含,则弹出提示框并不插入该字符串。最后,在main方法中创建了一个JFrame并添加了一个带滚动条的FilteredTextArea实例。
这样,当用户在FilteredTextArea中输入包含敏感词汇的字符串时,将会弹出提示框并自动过滤掉该字符串。您可以根据自己的需求和敏感词汇列表定制更复杂的文本过滤逻辑。