2012-09-24 2 views
0

Groovy의 replaceAll 기능에 문제가 있습니다.
CSV 파서 지정 작업을하고 있는데 공백으로 쉼표 대신 사용하려고합니다. 스크립트를 실행할 때마다 쉼표가 포함 된 데이터가 반환되기 때문에 실제 대체 할 구문을 파악할 수 없습니다.Groovy replaceAll 쉼표

class ActAsCSV { 
    def headers = [] 
    def contents = []  
    def read() { 
     def file = new File('C:/Users/Alex/Desktop/csv.txt') 
     def lines = file.readLines() 
     headers = lines[0].split(",") 

     def last = lines.tail() 
     def i = 0 
     while (last[i] != null){last[i].replaceAll(/,(?=([^\"]*\"[^\"]*\")*[^\"]*$)/' ') 
      println last[i] 
      i++} 
     }  
} 

alex = new ActAsCSV() 
alex.read() 

CSV 파일은 다음과 같습니다 년, 메이크업, 모델

1997,Ford,E350 

2000,Mercury,Cougar 

가에 예상대로 헤더의 배열이 작동합니다. 현재 코드 후 출력 ','

","

/','/

/,/

내가

을 시도

1997,Ford,E350 
2000,Mercury,Cougar 

입니다

과 내가 온라인에서 찾은 다양한 regexp 패턴. 문자 그대로 아무 것도 효과가 없습니다. 나는 내가 무엇을 놓치고 있는지 모른다. 나는 replaceAll이 그렇게 어렵지 않을 것이라고 생각했다. 나는 문서를 살펴 봤지만 문자열을 적용하는 방법을 잘 모르겠다.

답변

3

replaceAll() 메서드는 결과 문자열을 반환하지만 위에있는 코드는 last [i]가 수정되고 있다고 잘못 가정합니다. 이 도움이 될 것입니다

String tmp = last[i].replaceAll(/,/,' ') 
println tmp 

: 말했다

,이 코드 조각을 고려하십시오.

+0

감사합니다. 나는 내가 어떻게 그것을 놓쳤는 지 모른다. – thisisnotabus