2013-06-05 2 views
0

.cfg 파일의 텍스트를 바꾸려고합니다.StringIndexOutOfBoundsException 텍스트를 바꿀 때

내가 Gradle을를 사용하는, 그래서 정말 자바와 그루비의 혼합하고 있습니다.

다음은 현재 코드입니다. 이것은 재산의 첫 번째 줄을 잡고 새 줄을 시작 \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 

편집 : 텍스트를 아래처럼 여러 여러 속성으로 구성

a random property \ 
: 나는에서 텍스트를 수입하고있어 파일 code_cfg.cfg

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 

을 그리고 난 아무 생각이 617,451,515,

편집 : 그래서 최종 결과는 다음과 같이해야한다 왜. 이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

+1

[this] (http://stackoverflow.com/a/16927133/2051952) 도움이 되었습니까? – dmahapatro

+0

@dmahapatro 물론 전체 프로세스를 더 쉽게하기 위해 약간의 도움이되지만 문제는 여전히 동일합니다 : replaceAll 문 ... –

+0

@dmahapatro 아, 어리 석다. 링크의 코드가 완벽하게 작동하지만 정규식이 올바르지 않습니다. –

답변

0

정말 멋진 질문입니다. 내가 발견 할 수있는 한 가지 실수는 "$1"이 Groovy String 보간이고 1이라는 변수를 찾습니다. 대신 '$1'이어야합니다.

관련 문제