这是我的代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
public class POI {
public POI() throws IOException, InvalidFormatException
{
XWPFDocument doc = new XWPFDocument(OPCPackage.open("input.docx"));
for (XWPFParagraph p : doc.getParagraphs()) {
for (XWPFRun r : p.getRuns()) {
String text = r.getText(0);
System.out.println(text);
if (text.contains("needle"))
{
text = text.replace("needle", "haystack");
r.setText(text);
System.out.println(text);
}
}
}
doc.write(new FileOutputStream("output.docx"));
}
}
此代码旨在替换.docx
文档中的文本。我对该程序的输入是input.docx
,它包含以下数据
needle
game
system
我的输出为output.docx
,其中包含以下数据
needlehaystack
game
system
你可以看到差异。而不是用needle
“替换”单词haystack
,而只是在haystack
旁边添加了needle
。
我不知道我在这里做错了什么。如何正确替换.docx
个文件中的文字?
答案 0 :(得分:1)
绝对没有经验,但是对称,它应该是:
r.setText(text, 0);
答案 1 :(得分:0)
尝试使用text.replace("needle", "haystack");
replaceAll
使用正则表达式,“needle”不是正则表达式。