2016-03-19 3 views
0

をCSVファイルから文字列を読み取るI CSVファイルを解析しています、そして、私はこの行を持っている..オブジェクティブC:

45,12,bruine verbinding,mechelse heide,bruin,"276,201,836,338,468",01050000208A7A000001000000010200000002000000443BFF11CF720D41F296072200BD0641189D9C0D026D0D417A50F15264C30641,"MULTILINESTRING((241241.883787597 186272.016616039,241056.256646373 186476.540499333))" 

Iは次に方法によってアレイに

NSArray *arrObjects=[strObjects componentsSeparatedByString:@","]; 

この文字列を変換私は13個のオブジェクトを得るのではなく、8個の配列のオブジェクトが必要です。インデックス5のオブジェクトは、1つのオブジェクトではなく5つのオブジェクトにさらに分割されます(このオブジェクトには文字列内のコンマ(、)が追加されるため)。インデックス7はさらに2つのオブジェクトに分割されます。

インデックス5のフルストリングオブジェクトとインデックス5の2つのオブジェクトではなく、インデックス7のオブジェクトのみが必要です。これはメソッドcomponentsSeparatedByString:@","のためです。

+0

私は別のcaseaccountを持っています、私は0,1,2,3,4,6のような文字列の他のすべてのオブジェクトを読むことができます。オブジェクトにはインデックス5と7の問題があります。その文字列オブジェクトをnsarrayに変換するときは、componentsSeparatedByString:@ "、"、それからnsarryの文字列の余分な5つのオブジェクトを作成します。 –

答えて

1

CSV規格ではカンマがレコード内に表示されるので、曖昧にしてcomponentsSeparatedByString:@","を使用してフィールドを区切ることはできません。

実際には、改行、コンマ、および引用符をフィールドデータとして扱うことができるCSVパーサーを作成するのはかなり難しい問題です。

私はお勧めのいずれかになります。あなたがしなければならない場合は、

をフィールドのデータ(CSVに保存する前に、パーセントエスケープ各フィールド)カンマ、改行、または引用符が含まれていないことを口述

をかその形式のデータを扱うには、既存のCSVライブラリを使用します。

「Objective-CのCSVパーサ」のクイックGoogle検索はGithubの上でこれを示しています

CHCSVParser

それがコンマを含むフィールドを処理する必要があり、「適切なCSVパーサ」であることを主張するので。