web-dev-qa-db-ja.com

文字列を配列に分割する最良の方法

旅行アプリを開発しています。すべての州と国が含まれているtxtファイルを読み取る必要があります。これは非常に巨大なファイルであり、とにかく、これはファイル内のテキストの例です。

ザキントス(ZTH)、ギリシャ
ゼインズビル(ZZV)、米国
ザンジャン(JWN)、イラン
ザンジバル(ZNZ)、タンザニア
...

現在、問題なくファイルを読み取っていますが、2つの配列を作成する方法がわかりません。1つは州で、もう1つは国で、テキストがオートコンプリートされているときにテーブルに表示できるようにします。

「、」を区切り文字として使用してNSScannerを使用しようとしましたが、それを機能させる方法がわかりません。また、NSStringメソッドを使用しても結果はありません。

どんな助けでも歓迎します、事前にありがとう!!!。

ところで、私の英語XDについて申し訳ありません

22
Rafael Jimeno

NSStringをNSArrayに分割する最も簡単な方法は次のとおりです。

NSString *string = @"Zakinthos (ZTH),GREECE";
NSArray *stringArray = [string componentsSeparatedByString: @","];

これでうまくいくはずです。これを試しましたか?

72
hspain

Hspainの答えを拡張して、質問に沿った解決策をもたらすために、以下を提示します

NSString *string = @"Zakinthos (ZTH),GREECE";
NSArray *stringArray = [string componentsSeparatedByString: @","];

これにより、2要素の配列が得られます。[@ "Zakinthos(ZTH)"、@ "GREECE"];

ここから簡単に国を取得できます。

NSString *countryString = stringArray[1]; // GREECE

プロセスを繰り返してさらに絞り込みます。

NSArray *stateArray = [(NSString*)stringArray[0] componentsSeparatedByString:@" "];

stateArrayは次のようになります[@ "Zakinthos"、@ "(ZTH)"];

NSString *stateString = stateArray[0]; // Zakinthos

これで、CountryとStateが独自の文字列に分離されました。次のようにして新しい配列を作成できます。

NSMutableArray *countryArray = [NSMutableArray arrayWithObjects:countryString, nil];
NSMutableArray *stateArray = [NSMutableArray arrayWithObjects:stateString, nil];

場所のドキュメントを処理するときに、次のような方法で国や州を適切な配列に追加できます。

[countryArray addObject:newCountryString];
[stateArray addObject:newStateString];
10
Yup.