0

Groovy の replaceAll 機能に問題があります。
私は CSV パーサーの割り当てに取り組んでおり、コンマをスペースに置き換えようとしています。スクリプトを実行するたびにコンマが含まれたままデータが返されるため、実際にそれらを置き換える構文を理解できません。

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 ファイルは次のようになります: Year,Make,Model

1997,Ford,E350

2000,Mercury,Cougar

ヘッダー配列は想定どおりに機能します。現在のコードの後の出力は

1997,Ford,E350
2000,Mercury,Cougar

私が試してみました

"、"

'、'

/','/

/、/

オンラインで見つけたさまざまな正規表現パターン。文字通り何も機能していません。何が欠けているのかわかりません。replaceAll はそれほど難しくないと思いました。ドキュメントに目を通しましたが、文字列、クロージャー コンボを適用する方法がわかりません。

4

1 に答える 1

3

このreplaceAll()メソッドは結果の文字列を返しますが、上記のコードは last[i] が変更されていると誤って想定していることに注意してください。

とはいえ、次のコード フラグメントを検討してください。

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

これは役に立ちます。

于 2012-09-24T01:23:21.993 に答える