0

文字列を配列に解析しようとしています。たとえば、各項目は<>の間にあり<this is column 1><this is column 2>ます。

助けていただければ幸いです。

ありがとう

4

3 に答える 3

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);
于 2012-12-14T16:13:29.800 に答える
1

1つのアプローチは、NSStringのcomponentsSeparatedByCharactersInSetまたはcomponentsSeparatedByStringのいずれかを使用することです。

NSString *test = @"<one> <two> <three>";

NSArray *array1 = [test componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];

NSArray *array2 = [test componentsSeparatedByString:@"<"];

array2の場合はトリミングするか、 array1の場合は空白文字列を削除するかのいずれかで、後でクリーンアップを行う必要があります

于 2012-12-14T16:13:08.593 に答える
1
NSString *input =@"<one><two><three>";
NSString *strippedInput = [input stringByReplacingOccurencesOfString: @">" withString: @""]; //strips all > from input string
NSArray *array = [strippedInput componentsSeperatedByString:@"<"];

[array objectAtIndex:0]は空の文字列( "")になることに注意してください。これは、「実際の」文字列の1つに<または>が含まれている場合、もちろん機能しません。

于 2012-12-14T16:37:43.863 に答える