Nasıl Kakao bir sekme ayrılmış dize ayrıştırmak için NSScanner kullanırım?

oy
0

Ben sekme ayrılmış veri döndüren bir web hizmeti var (aşağıdaki örneğe bakın).

Ben bunun bir navigasyon görünümü oluşturmak, böylece bir dizi veya benzeri içine bu ayrıştırmak gerekir.

Ben web isteği gerçekleştirmek için idare ettik ve bir XML dosyası ayrıştırmak, ancak Objective-C bilgim azdır.

433 Eat
    502 Not Fussed
    442 British
    443 Chinese
    444 Dim Sum
    445 Fish
    446 French
    447 Gastropubs
    449 Indian
    451 Italian
    452 Japanese
    453 Middle Eastern
    454 Pan-Asian
    455 Pizza
    456 Spanish
    457 Tapas
    458 Thai
    459 Vegetarian
434 Drink
    501 Not Fussed
    460 Bars 
    461 Pubs
Oluştur 09/12/2008 saat 15:43
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
7

Ben (bana biraz garip görüntüler) tam olarak biçimini anlamak emin değilim ama bunu yapmanın en kolay yolu with - (NSArray *)componentsSeparatedByString:(NSString *)separatorNSString sınıf ... Örneğin bir yöntemdir ki:

NSArray *components = [myString componentsSeperatedByString:@"\t"];

Bu döndürür NSArrayait NSStringsher sekme ile sınırlandırılmış alan için biri. Yeni hat ayırıcıları önemliyse kullanabilirsiniz - (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator(ayrıca üzerinde NSStringsınırlayıcı birden fazla çeşit kullanarak bölmek).

Cevap 09/12/2008 saat 17:58
kaynak kullanıcı

oy
4

Ben düz bir liste daha duygu bir aranıyor vardı. Eğer çok boyutlu bir yapıya istiyorsanız böyle bir şey yapabilirsiniz:

NSArray *lines = [data componentsSeparatedByString:@"\n"];
for (NSString *line in lines) {
    NSArray *fields = [line componentsSeparatedByString:@"\t"];
     // Do something here with each two-element array, such as add to an NSDictionary or to an NSArray (to make a multidimensional array.)
}
Cevap 09/12/2008 saat 18:13
kaynak kullanıcı

oy
2

Sen NSScanner ile doğru yoldasın. En az iki tarayıcı gerekir: Bir bütün girdi dizesinden satırları taramak ve her hat için bir tarayıcı için. Daha sonra, sadece boşluk (değil yeni satır) atlamak için tam giriş tarayıcı ayarlayın:

  1. bir satırını (end-of-line kadar kaynak dizesi) tarayın.
  2. Bir tarayıcı oluşturun ve onu hattan sekmeleri tarama var.
  3. taranmış sekmeleri sayın. Bu senin girinti düzeyi var.
  4. satırın geri kalanı giriş numarası ve adıdır. neye ihtiyacınız bağlı numarasını ve adını ayırmak, ya da birlikte onları bırakmak beyaz boşluklar kadar Çizgiyi tarama başladı.
  5. 1. adıma geri dön.

Spesifik bir yöntem isimleri için, bkz NSScanner sınıf başvurusu ve NSCharacterSet sınıf başvurusu .

Cevap 09/12/2008 saat 18:15
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more