【问题标题】:StringIndexOutOfBoundsException when trying to replace text尝试替换文本时出现 StringIndexOutOfBoundsException
【发布时间】:2013-06-05 14:33:00
【问题描述】:

我正在尝试替换 .cfg 文件中的文本。

我正在使用 Gradle,所以真的是 Java 和 Groovy 的混合体。

这是我当前的代码。这应该抓住属性的第一行,添加\n 开始新的一行,然后是我正在导入文本的文件的内容(文本在下面):

String filename = "settings/code_cfg.cfg"
File f = new File(filename)
String text = f.getText()
String replace = "$1 \n" + text
dspaceCfgTxt = dspaceCfgTxt.replaceFirst(/(filter.plugins.*)/, replace) <!-- This is line 545

编辑:文本由多个多行属性组成,如下所示:

filter.plugins =  property.sub.random.jibberish \
                  property.second.random \
                  property.lala

我要从中导入文本的文件code_cfg.cfg 的内容如下:

a random property \

编辑:所以最终结果应该是这样的:

filter.plugins =  property.sub.random.jibberish \
                  a random property \
                  property.second.random \
                  property.lala

但是当我尝试执行时出现以下错误:

Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 28
    at java_lang_String$replaceFirst.call(Unknown Source)
    at build_mv9ue0gaar4db2nj1lt6j3olk$_run_closure35.doCall(/Users/user/build.gradle:545)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:485)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:469)
    at org.gradle.api.internal.tasks.TaskStatusNagger$1.execute(TaskStatusNagger.java:78)
    at org.gradle.api.internal.tasks.TaskStatusNagger$1.execute(TaskStatusNagger.java:74)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:64)
    ... 57 more

我也不知道为什么。有关如何解决此问题的任何建议?

【问题讨论】:

  • 可以this帮忙吗?
  • @dmahapatro 确实有助于简化整个过程,但问题仍然存在:replaceAll 声明...
  • @dmahapatro 啊,愚蠢的我。链接上的代码完美运行,我的正则表达式不正确。

标签: java groovy replace gradle


【解决方案1】:

这确实是一个 Groovy 问题。我能发现的一个错误是"$1" 是Groovy 字符串插值,它会寻找一个名为1 的变量。相反,它必须是'$1'

【讨论】:

    猜你喜欢
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 2018-04-24
    相关资源
    最近更新 更多