Java 尝试替换文本时出现StringIndexOutOfBoundsException

Java 尝试替换文本时出现StringIndexOutOfBoundsException,java,groovy,replace,gradle,Java,Groovy,Replace,Gradle,我正在尝试替换.cfg文件中的文本 我使用的是Gradle,所以它是Java和Groovy的混合体 这是我目前的密码。这应该抓住属性的第一行,添加\n以开始新的一行,然后是我导入文本的文件的内容(文本在下面): 我从中导入文本的文件code\u cfg.cfg的内容如下: a random property \ 编辑:所以最终结果应该是这样的: filter.plugins = property.sub.random.jibberish \ propert

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

我使用的是Gradle,所以它是Java和Groovy的混合体

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

我从中导入文本的文件
code\u cfg.cfg
的内容如下:

a random property \
编辑:所以最终结果应该是这样的:

filter.plugins =  property.sub.random.jibberish \
                  property.second.random \
                  property.lala
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

我不知道为什么。有没有关于如何解决这个问题的建议?

这真是个很好的问题。我能发现的一个错误是,
“$1”
是Groovy字符串插值,将查找名为
1
的变量。相反,它必须是
“$1”

可以帮助吗?@dmahapatro当然可以帮助简化整个过程,但问题仍然是一样的:
replaceAll
语句…@dmahapatro啊,愚蠢的我。链接上的代码工作得很好,我的正则表达式就是不正确。
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