0

各オブジェクトを行末の「,」で区切ったテキスト ファイルから、NSArraycityList という配列を作成しました。テキスト ファイルの生データは次のようになります。

City:San Jose|County:Santa Clara|Pop:945942,
City:San Francisco|County:San Francisco|Pop:805235,
City:Oakland|County:Alameda|Pop:390724,
City:Fremont|County:Alameda|Pop:214089,
City:Santa Rosa|County:Sonoma|Pop:167815,

citysList 配列は問題ありません (オブジェクトのカウント、データなどを見ることができます)。ここで、各配列オブジェクトで都市と Pop: を解析したいと思います。オブジェクトを処理する for ループを作成すると仮定します。したがって、cityNames という名前の変更可能な配列を作成して、この配列に都市名だけを入力する場合は、次のような for ループを使用します。

SMutableArray *cityNames = [NSMutableArray array];
    for (NSString *i in citiesList) {
        [cityNames addObject:[???]];
    }

私の質問は、配列内のオブジェクトから City: San Francisco だけを見つけるためにどのクエリを使用すればよいですか?

4

4 に答える 4

2

引き続き使用componentsSeparatedByStringして、セクションとキーと値のペアを分割できます。またはNSScanner、キーと値のペアを解析して文字列を読み取るために を使用できます。rangeOfString「|」を見つけるために使用できます 範囲を抽出します。非常に多くのオプション。

于 2013-08-07T21:50:24.557 に答える
1

componentsSeparatedByString:以下のように使用したい。(これらの行はエラーチェックを行いません)

NSArray *fields = [i componentsSeparatedByString:@"|"];
NSString *city = [[[fields objectAtIndex:0] componentsSeparatedByString:@":"] objectAtIndex:1];
NSString *county = [[[fields objectAtIndex:1] componentsSeparatedByString:@":"] objectAtIndex:1];

キーを削除できる場合、および次のようないくつかの区切り記号:

San Jose|Santa Clara|945942
San Francisco|San Francisco|805235
Oakland|Alameda|390724
Fremont|Alameda|214089
Santa Rosa|Sonoma|167815

次に、コードを単純化できます (まだエラー チェックはありません)。

NSArray *fields = [i componentsSeparatedByString:@"|"];
NSString *city = [fields objectAtIndex:0];
NSString *county = [fields objectAtIndex:1];
于 2013-08-07T21:55:08.573 に答える