2012-09-24 73 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 

我試圖

「」

''

/''/

/,/

和我在網上找到的各種正則表達式模式。從字面上看,沒有任何工作。我不知道我缺少什麼,我認爲replaceAll不會很難。我查看了文檔,但不確定如何應用字符串,關閉組合。

回答

3

請注意,replaceAll()方法返回結果字符串,而上面的代碼錯誤地假定正在修改last [i]。

也就是說,考慮下面的代碼片段:

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

這將幫助。

+0

謝謝。我不知道我是如何錯過的。 – thisisnotabus