Ik kreeg een NSString van de server. Nu wil ik het splitsen in de substring ik nodig heb. Hoe kan ik de string te splitsen?
Bijvoorbeeld:
substring1: lezen uit het tweede teken naar de 5e karakter
substring2: lees 10 personages uit de 6e karakter.
Ik kreeg een NSString van de server. Nu wil ik het splitsen in de substring ik nodig heb. Hoe kan ik de string te splitsen?
Bijvoorbeeld:
substring1: lezen uit het tweede teken naar de 5e karakter
substring2: lees 10 personages uit de 6e karakter.
U kunt ook een string gesplitst door een substring, met behulp van nSTRING's componentsSeparatedByString methode.
Voorbeeld van documentatie:
NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];
NSString heeft een aantal methoden gebruiken:
[myString substringToIndex:index];
[myString substringFromIndex:index];
[myString substringWithRange:range];
Controleer de documentatie NSString voor meer informatie.
Ik schreef een beetje methode om strings splitsen in een bepaalde hoeveelheid onderdelen. Merk op dat het ondersteunt alleen single separator karakters. Maar ik denk dat het is een efficiënte manier om een NSString splitsen.
//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;
}