Hogyan használható NSScanner elemezni egy tabulátorral tagolt karakterlánc Cocoa?

szavazat
0

Van egy webes szolgáltatás, amely visszaadja TXT adatok (lásd az alábbi mintát).

Meg kell feldolgozni ezt az egy tömbben vagy hasonló, így tudok létrehozni egy navigációs nézet is.

Sikerült végre a webes kérés tudta feldolgozni egy XML fájl, de a tudásom Objective-C kicsi.

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
A kérdést 09/12/2008 15:43
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
7

Én nem értem a méret pontosan (ha megjelenik egy kicsit furcsa nekem), de a legegyszerűbb módja ennek az, with - (NSArray *)componentsSeparatedByString:(NSString *)separatorami a módszer a NSString osztály ... Például:

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

Ez ad vissza NSArraya NSStrings, egy-egy lapra tagolt területen. Ha az új-line elválasztó fontos használhatja - (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator(szintén NSString), hogy szét egynél több fajta határoló.

Válaszolt 09/12/2008 17:58
a forrás felhasználó

szavazat
4

Volt egy érzés több, mint egy sima lista akart. Ha szeretne egy többdimenziós struktúra tudsz tenni valamit, mint ez:

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.)
}
Válaszolt 09/12/2008 18:13
a forrás felhasználó

szavazat
2

Maga a jobb pályán NSScanner. Szükséged lesz legalább két szkennerek: Az egyik, hogy átvizsgálja sorokat a teljes bemeneti karakterlánc és egy scanner minden vonalon. Állítsa be a teljes bemeneti szkenner kihagyja csak whitespace (nem újsorokon), akkor:

  1. Scan egy vonal (forrás karakterlánc végéig érvényes-of-vonal).
  2. Hozzon létre egy szkenner, és azt beolvasni füleket a pályáról.
  3. Számoljuk meg a lapokat olvas be. Ez a behúzás mértékét.
  4. A többi vonal a bejegyzés számát és nevét. Lehet olvasni a sorban, hogy szóközöket elválasztani a számát és nevét, vagy hagyja őket, attól függően, hogy mire van szüksége.
  5. Menj vissza az 1. lépéshez.

A konkrét módszer nevek, lásd a NSScanner osztályú referencia és a NSCharacterSet osztályú referencia .

Válaszolt 09/12/2008 18:15
a forrás felhasználó

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