我很感激帮助修改一个函数!
目标: 制作特定字符的数组列表。 编写一个方法,从文本JEditorpane中删除arraylist中指定的字符。
到目前为止: 做了一个角色的arraylist, 写了一个删除字符的函数。 做了一个gui,包括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);
感谢您提前提供任何帮助。
答案 0 :(得分:0)
由于Document
没有charAt
方法,您首先需要提取文档的内容。这可以通过以下方式完成:
String content = document.getText(0, document.getLength());
然后,当for-loop
与content
一起使用时,它应该有效。所以你的代码看起来像这样:
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);
答案 1 :(得分:-2)
这个怎么样:
String outputText =document.getText(0,docuemnt.getLength()).replaceAll("[a|b|c]"," ");
//set regex that you want
System.out.println(outputText);
您可以使用document.getText(0,docuemnt.getLength())作为lino建议。但我更喜欢正则表达式,因为你不必循环和检查,使用StringBuilder而不是连接是一种更好的做法