如何在 iOS 上将字符串拆分为子字符串?

我从服务器收到一个 NSString,现在我想把它分成我需要的子串。 怎样分开绳子?

例如:

Substring1: 从第二个字符读取到第五个字符

Substring2: 从第6个字符读取10个字符。

102348 次浏览

NSString 为此提供了一些方法:

[myString substringToIndex:index];
[myString substringFromIndex:index];
[myString substringWithRange:range];

有关更多信息,请查看 NSString 的文档。

还可以使用 NString 的 组件分离字符串方法将字符串拆分为子字符串。

文档中的例子:

NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];

我编写了一个小方法来将字符串分成指定数量的部分。 注意,它只支持单个分隔符,但是我认为这是分割 NSString 的一种有效方法。

//split string into given number of parts
-(NSArray*)splitString:(NSString*)string withDelimiter:(NSString*)delimiter inParts:(int)parts{
NSMutableArray* array = [NSMutableArray array];


NSUInteger len = [string length];
unichar buffer[len+1];


//put separator in buffer
unichar separator[1];
[delimiter getCharacters:separator range:NSMakeRange(0, 1)];


[string getCharacters:buffer range:NSMakeRange(0, len)];


int startPosition = 0;
int length = 0;
for(int i = 0; i < len; i++) {


//if array is parts-1 and the character was found add it to array
if (buffer[i]==separator[0] && array.count < parts-1) {
if (length>0) {
[array addObject:[string substringWithRange:NSMakeRange(startPosition, length)]];


}


startPosition += length+1;
length = 0;


if (array.count >= parts-1) {
break;
}


}else{
length++;
}


}


//add the last part of the string to the array
[array addObject:[string substringFromIndex:startPosition]];


return array;
}