Лучший способ разбить строки на массив - PullRequest
22 голосов
/ 03 августа 2011

Я разрабатываю приложение для путешествий, мне нужно прочитать текстовый файл, содержащий все штаты и страны, так как вы можете заметить, что это довольно большой файл для чтения, в любом случае, это пример текста внутри файл:

Закинтос (ZTH), ГРЕЦИЯ
Зейнсвилль (ZZV), США
Зенджан (JWN), ИРАН
Занзибар (ЗНЗ), ТАНЗАНИЯ
...

Теперь я читаю файл без проблем, но я не знаю, как создать два массива, один с состоянием, а другой со страной, чтобы я мог показать их в таблице при автозаполнении текста. *

Я пытался использовать NSScanner, используя "," в качестве разделителя, но я не знаю, как это сделать, а также я пытался использовать методы NSString безрезультатно.

Любая помощь приветствуется, заранее спасибо !!!.

кстати извините за мой английский XD

Ответы [ 2 ]

71 голосов
/ 03 августа 2011

Самый простой способ разбить NSString на NSArray - это:

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

Это должно работать для васВы пробовали это?

8 голосов
/ 18 февраля 2015

Чтобы расширить ответ 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];
...