相关疑难解决方法(0)

Java Regex:将整个单词与单词边界匹配

我正在尝试使用Java检查字符串是否包含整个单词.以下是一些例子:

Text : "A quick brown fox"
Words:
"qui" - false
"quick" - true
"quick brown" - true
"ox" - false
"A" - true
Run Code Online (Sandbox Code Playgroud)

以下是我的代码:

String pattern = "\\b(<word>)\\b";
String s = "ox";
String text = "A quick brown fox".toLowerCase();
System.out.println(Pattern.compile(pattern.replaceAll("<word>", s.toLowerCase())).matcher(text).find());
Run Code Online (Sandbox Code Playgroud)

它与我在上面的例子中提到的字符串一样正常工作.但是,如果输入字符串包含类似等字符%,则会得到不正确的结果(,例如:

Text : "c14, 50%; something (in) bracket"
Words:
"c14, 50%;" : false
"(in) bracket" : false
Run Code Online (Sandbox Code Playgroud)

它与我的regex模式有关(或者我正在做错误的整个模式匹配).谁能建议我一个更好的方法.

java regex string

6
推荐指数
1
解决办法
983
查看次数

Apache POI XWPFRun对象中的单独文本行

我正在尝试通过使用类将模板DOCX文档替换为Apache 。我在文档中有标签,并有一个文件来读取替换数据。我的问题是,当我将其扩展名更改为file并打开时,文本行似乎以某种方式分开。例如,文本变成和分开。读取方式与此相同,因为原始格式是这样的。这将在段落中创建2个对象,分别显示和。POIXWPFDocumentJSONDOCXZIPdocument.xml[MEMBER_CONTACT_INFO][MEMBER_CONTACT_INFO]POIDOCXXWPFRun[MEMBER_CONTACT_INFO]

我的问题是,是否有一种方法可以POI通过合并相关运行或类似方法来强制运行像Word一样的运行?或者我该如何解决这个问题?我在替换时匹配运行文本,但找不到标签,因为它被分成2个不同的运行对象。

最好

apache-poi

4
推荐指数
2
解决办法
2590
查看次数

替换Apache POI XWPF中的文本无法正常工作

我目前正在尝试处理上一篇名为" 替换Apache POI XWPF中的文本"的文章中提到的代码.

我已经尝试了以下它可以工作,但我不知道我是否遗漏了任何东西.当我运行代码时,文本不会被替换,而是添加到搜索结尾.例如,我创建了一个基本的word文档,并输入了文本"test".在下面的代码中,当我运行它时,我最终得到带有文本"testDOG"的新文档.

我不得不将原始代码从String text = r.getText(0)更改为String text = r.toString(),因为我在运行代码时不断收到NullError.

import java.io.*;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;


public class testPOI {

    public static void main(String[] args) throws Exception{

    String filepath = "F:\\MASTER_DOC.docx";
    String outpath = "F:\\Test.docx";

    XWPFDocument doc = new XWPFDocument(OPCPackage.open(filepath));
    for (XWPFParagraph p : doc.getParagraphs()){
        for (XWPFRun r : p.getRuns()){
            String text = r.toString();
            if(text.contains("test")) {
                text = text.replace("test", "DOG");
                r.setText(text);
            }
        }
    }
   doc.write(new FileOutputStream(outpath));
}
Run Code Online (Sandbox Code Playgroud)

编辑:感谢大家的帮助.我浏览了一下,在Apache POI中找到了 …

java apache ms-word apache-poi

3
推荐指数
2
解决办法
9595
查看次数

替换 .docx 中的文本模板(Apache POI、Docx4j 或其他)

我想使用正则表达式 (java RegEx)在MS Word ( .docx ) 文档中进行替换:

\n\n
Example: \n \xe2\x80\xa6, \xd1\x81 \xd0\xbe\xd0\xb4\xd0\xbd\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8b, \xd0\xb8 %SOME_TEXT% \xd0\xb8\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x83\xd0\xb5\xd0\xbc\xd0\xbe\xd0\xb5 \xd0\xb2 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xb5\xd0\xb9\xd1\x88\xd0\xb5\xd0\xbc \xc2\xab\xd0\x97\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb7\xd1\x87\xd0\xb8\xd0\xba\xc2\xbb, \xd0\xb2 \n \xd0\xbb\xd0\xb8\xd1\x86\xd0\xb5  %SOME_TEXT%   \xd0\xb4\xd0\xb5\xd0\xb9\xd1\x81\xd1\x82\xd0\xb2\xd1\x83\xd1\x8e\xd1\x89\xd0\xb5\xd0\xb3\xd0\xbe \xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x81\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb8 %SOME_TEXT% \xd1\x81 \xd0\xb4\xd1\x80\xd1\x83\xd0\xb3\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8b, \n \xd0\xb7\xd0\xb0\xd0\xba\xd0\xbb\xd1\x8e\xd1\x87\xd0\xb8\xd0\xbb\xd0\xb8 \xd0\xbd\xd0\xb0\xd1\x81\xd1\x82\xd0\xbe\xd1\x8f\xd1\x89\xd0\xb8\xd0\xb9 \xd0\x94\xd0\xbe\xd0\xb3\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x80 \xd0\xbe \xd0\xbd\xd0\xb8\xd0\xb6\xd0\xb5\xd1\x81\xd0\xbb\xd0\xb5\xd0\xb4\xd1\x83\xd1\x8e\xd1\x89\xd0\xb5\xd0\xbc: \xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试使用Apache POI - XWPF获取文本模板(如%SOME_TEXT%) 并替换文本,但不能保证替换,因为 POI 分隔运行 => 我得到类似这样的内容():System.out.println(run.getText(0))

\n\n
\xe2\x80\xa6\n, \xd1\x81 \xd0\xbe\xd0\xb4\xd0\xbd\xd0\xbe\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xbe\xd0\xbd\xd1\x8b, \xd0\xb8 \n%\nSOME_TEXT\n%\n\n\xd0\xb8\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x83\xd0\xb5\xd0\xbc\xd0\xbe\xd0\xb5 \n\xd0\xb2 \xd0\xb4\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xb5\xd0\xb9\xd1\x88\xd0\xb5\xd0\xbc \xc2\xab\xd0\x97\xd0\xb0\xd0\xba\xd0\xb0\xd0\xb7\xd1\x87\xd0\xb8\xd0\xba\xc2\xbb, \xd0\xb2 \xd0\xbb\xd0\xb8\xd1\x86\xd0\xb5\n\n%\nSOME\n_\nTEXT\n%\n
Run Code Online (Sandbox Code Playgroud)\n\n

代码示例:

\n\n
FileInputStream fis = new FileInputStream(new File("document.docx"));\nXWPFDocument document = new XWPFDocument(fis);\nList<XWPFParagraph> …
Run Code Online (Sandbox Code Playgroud)

java docx apache-poi docx4j xwpf

2
推荐指数
1
解决办法
5871
查看次数

标签 统计

apache-poi ×3

java ×3

apache ×1

docx ×1

docx4j ×1

ms-word ×1

regex ×1

string ×1

xwpf ×1