使用apache POIreplaceword文档中的文本会失败,因为段落运行对象在占位符处被分割

我正在使用Apache POI(版本3.17)来replaceMS Word和Excel文档中的一些文本。 文档中的占位符具有以下结构:[key]。

当我replace[键]值时,所有现有的格式化选项必须保持。 问题是,当find包含这样一个占位符的段落时,运行对象的列表就像这样构build:

  1. … [
  2. 键] …

无法在一次运行中保留占位符。 我可以检查多次运行,但是通过这种方式,弄清楚正确的样式和运行的数量,占位符的跨度,真是一团糟。

是否有可能强制运行始终包含占位符的全长? 占位符的所有部分都以相同的方式格式化。

POI什么时候决定创build一个新的运行? 我明白,如果以不同的方式对POI进行格式化,那么POI就会分割占位符,但显然POI开始新的运行时有不同的标准。