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

Raf*_*eno 22 arrays split token nsstring nsscanner

我正在开发一个旅行应用程序,我必须阅读包含所有州和国家的txt文件,因为您可以注意到这是一个非常大的文件,无论如何,这是文件内部文本的示例:

Zakinthos(ZTH),希腊
Zanesville(ZZV),美国
Zanjan(JWN),IRAN
Zanzibar(ZNZ),TANZANIA
......

现在我正在阅读文件没有问题,但我不知道如何创建两个数组,一个与州,另一个与国家,所以我可以在文本自动完成时将它们显示在表中.

我已经尝试使用NSScanner使用","作为分隔符,但我不知道如何使其工作,我也尝试使用NSString方法没有结果.

欢迎任何帮助,谢谢你提前!!!

顺便说一下我的英语XD

hsp*_*ain 71

将NSString拆分为NSArray的最简单方法如下:

NSString *string = @"Zakinthos (ZTH),GREECE";
NSArray *stringArray = [string componentsSeparatedByString: @","];
Run Code Online (Sandbox Code Playgroud)

这应该适合你.你试过这个吗?

  • 如果答案有帮助,那么您应该选择它作为正确的答案. (6认同)

Yup*_*up. 8

为了扩展hspain的答案,并使解决方案更符合问题,我将向您介绍以下内容

NSString *string = @"Zakinthos (ZTH),GREECE";
NSArray *stringArray = [string componentsSeparatedByString: @","];
Run Code Online (Sandbox Code Playgroud)

这给你一个2元素数组:[@"Zakinthos(ZTH)",@"GREECE"];

从这里你可以很容易地到达这个国家.

NSString *countryString = stringArray[1]; // GREECE
Run Code Online (Sandbox Code Playgroud)

并重复该过程以进一步完善:

NSArray *stateArray = [(NSString*)stringArray[0] componentsSeparatedByString:@" "];
Run Code Online (Sandbox Code Playgroud)

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

NSString *stateString = stateArray[0]; // Zakinthos
Run Code Online (Sandbox Code Playgroud)

现在你将Country和State分隔成他们自己的字符串,你可以用这样建立新的数组:

NSMutableArray *countryArray = [NSMutableArray arrayWithObjects:countryString, nil];
NSMutableArray *stateArray = [NSMutableArray arrayWithObjects:stateString, nil];
Run Code Online (Sandbox Code Playgroud)

在处理位置文档时,可以通过以下方式将更多国家/地区和状态添加到其正确的数组中:

[countryArray addObject:newCountryString];
[stateArray addObject:newStateString];
Run Code Online (Sandbox Code Playgroud)