Java - 从 jeditorpane 中的文本中删除特定字符

Java - removing specific characters from text in jeditorpane

如果能帮我修改函数,我将不胜感激!

宗旨: 制作特定字符的数组列表。 写一个方法从文本 JEditorpane 中删除 arraylist 中指定的字符。

到目前为止: 制作了一个字符数组列表, 写了一个函数来删除字符。 制作了一个包含 jeditorpane

的图形用户界面

问题: 该函数有效,并删除了我通过字符串打印到控制台的字符。

我正在努力使该函数从我在 JEditorpane 中打开的文本文档中删除字符。

代码简写:

     private static ArrayList<Character> special = new  ArrayList<Character>(Arrays.asList('a','b','h'));



    public class removing implements ActionListener {
    public void actionPerformed(ActionEvent e) {

documentpane 是我的 jeditorpane 的名称

如果我将 document.chatAt 更改为 test.chatAt,(打印到控制台,这有效。

        Document document = documentpane.getDocument();

        String test = "hello world?";
        String outputText = "";

        for (int i = 0; i < document.getLength(); i++) {
            Character c = new Character(document.charAt(i));
            if (!special.contains(c))
                outputText += c;
            else
                outputText += " ";
        }
        System.out.println(outputText);

提前感谢您的帮助。

这个怎么样:

    String outputText =document.getText(0,docuemnt.getLength()).replaceAll("[a|b|c]"," ");
   //set regex that you want 
    System.out.println(outputText);

您可以按照 lino 的建议使用 document.getText(0,docuemnt.getLength())。但我更喜欢正则表达式,因为你不必循环和检查,使用 StringBuilder 而不是连接是更好的做法

由于Document 没有charAt 方法,您首先需要提取文档的内容。这可以通过以下方式完成:

String content = document.getText(0, document.getLength());

然后,当您将 for-loopcontent 一起使用时,它应该可以工作。所以你的代码看起来像这样:

Document document = documentpane.getDocument();
String content = document.getText(0, document.getLength());
String outputText = "";
for (int i = 0; i < content.length(); i++) {
    Character c = new Character(content.charAt(i));
    if (!special.contains(c))
       outputText += c;
    else
       outputText += " ";
}
System.out.println(outputText);