2017-10-11 26 views
3

私はCSVファイルを読み込もうとしています。しかし、私の最初のレコードの最初のフィールドでは、私の文字列の前にスペースができています。誰でも私を助けることができますか?CSVからデータを読み取る

 FileInputStream fis = new FileInputStream(fx); 
     Reader reader = new InputStreamReader(fis, ENCODING)) { 
     final CSVParser parser = new CSVParser(reader, CSVFormat.EXCEL.withDelimiter(DELIMITER)); 

     for (CSVRecord record : parser) { 
      String cidade = record.get(0); 

私のファイルの最初の行は「FUNCHAL; 1261; 9000; C; D;」です。私は「ファンチャル」を得ています。 1行目はOKです。

+0

エンコーディングはUTF8で、DELIMITERは ";"と等価です。 –

+0

私はあなたが試みることができると思います: 'String cidade = record.get(0).trim();'。既に – DevilsHnd

+0

が試されています。見えない文字でなければならない –

答えて

2

BOMマーカー(おそらくBOM付きのUTF-8)でファイルエンコーディングを読み込んでいることを確かめてください。 Javaではマーカーを取り除かずにtrim()を呼び出すことは役に立ちません。

BOMマーカーを正しく処理するunivocity-parsersで解析してみてください。また、commons-csvよりも3 times fasterです。私はこのライブラリの作者だ:

CsvParser parser = new CsvParser(Csv.parseExcel()); 
    for(Record record : parser.iterateRecords(fx, ENCODING)){ 
     record.getString(0); 
    } 

は、それが

Abracos免責事項をお役に立てば幸いです。オープンソースで無料(Apache 2.0ライセンス)

関連する問題