将字符串拆分成数组的最佳方法

25
我正在开发一款旅游应用程序,我需要读取一个包含所有州和国家的 txt 文件,如您所见这是一个相当庞大的文件,无论如何,以下是文件内部文本的示例:

Zakinthos (ZTH),GREECE
Zanesville (ZZV),USA
Zanjan (JWN),IRAN
Zanzibar (ZNZ),TANZANIA
...

现在我可以顺利读取该文件,但我不知道如何创建两个数组,一个包含州名,另一个包含国家名,以便在自动完成文本时将它们显示在表格中。
我尝试使用 NSScanner 以“,”作为分隔符进行解析,但我不知道如何使其正常工作,也尝试使用 NSString 方法但没有结果。
欢迎任何帮助,非常感谢!!!
顺便说一下,对于我的英语表示抱歉 XD
2个回答

77

将 NSString 分割成 NSArray 最简单的方法如下:

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

这个应该对你有用。你试过了吗?


是的,问题在于所有数据都进入同一个数组,我需要有两个数组,这样在表格中我才能显示州,并将国家作为详细文本。谢谢回答。 - Rafael Jimeno
6
如果答案有帮助的话,您应该将其选择为正确的回应。 - rm -rf slash

11

在hspain的回答基础上,为了更符合问题,我给你呈现以下内容

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

这会给你一个包含两个元素的数组: [@"Zakinthos (ZTH)", @"GREECE"];

从这里你可以很容易地得到国家。

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

并重复该过程进行进一步改进:

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

stateArray现在看起来像这样 [@"Zakinthos", @"(ZTH)"];

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

现在您已经将国家和州分开成了它们自己的字符串,您可以像这样构建新的数组:

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

当您处理位置文档时,可以通过以下方式将更多的国家和州添加到它们适当的数组中:

[countryArray addObject:newCountryString];
[stateArray addObject:newStateString];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接