文字列を配列に解析しようとしています。たとえば、各項目は<>の間にあり<this is column 1><this is column 2>
ます。
助けていただければ幸いです。
ありがとう
文字列を配列に解析しようとしています。たとえば、各項目は<>の間にあり<this is column 1><this is column 2>
ます。
助けていただければ幸いです。
ありがとう
実証するもの:
NSString *string = @"<this is column 1><this is column 2>";
NSScanner *scanner = [NSScanner scannerWithString:string];
NSMutableArray *array = [NSMutableArray arrayWithCapacity:0];
NSString *temp;
while ([scanner isAtEnd] == NO)
{
// Disregard the result of the scanner because it returns NO if the
// "up to" string is the first one it encounters.
// You should still have this in case there are other characters
// between the right and left angle brackets.
(void) [scanner scanUpToString:@"<" intoString:NULL];
// Scan the left angle bracket to move the scanner location past it.
(void) [scanner scanString:@"<" intoString:NULL];
// Attempt to get the string.
BOOL success = [scanner scanUpToString:@">" intoString:&temp];
// Scan the right angle bracket to move the scanner location past it.
(void) [scanner scanString:@">" intoString:NULL];
if (success == YES)
{
[array addObject:temp];
}
}
NSLog(@"%@", array);
1つのアプローチは、NSStringのcomponentsSeparatedByCharactersInSetまたはcomponentsSeparatedByStringのいずれかを使用することです。
NSString *test = @"<one> <two> <three>";
NSArray *array1 = [test componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
NSArray *array2 = [test componentsSeparatedByString:@"<"];
array2の場合はトリミングするか、 array1の場合は空白文字列を削除するかのいずれかで、後でクリーンアップを行う必要があります。
NSString *input =@"<one><two><three>";
NSString *strippedInput = [input stringByReplacingOccurencesOfString: @">" withString: @""]; //strips all > from input string
NSArray *array = [strippedInput componentsSeperatedByString:@"<"];
[array objectAtIndex:0]は空の文字列( "")になることに注意してください。これは、「実際の」文字列の1つに<または>が含まれている場合、もちろん機能しません。