0

以下の長い文字列から「19」をどのように抽出しますか? これが私が行う方法ですが、これよりも優れた/高速な方法はありますか?

NSString *myString = @"13.5 Points-(19) 38 Points-(50) 50 Points-(215) 4.3 Points-105.8 Points-21";
NSArray  *myArray  = [myString componentsSeparatedByString:@"-"];

NSString *splitString  = [myArray        objectAtIndex:1             ];
NSRange  range         = [splitString    rangeOfString:@")"          ];
NSString *newString    = [splitString substringToIndex:range.location];

NSString *newString2 = [newString stringByReplacingOccurrencesOfString:@"(" withString:@""];

NSLog(@"newString2: %@", newString2);
4

2 に答える 2

4

必要なのが元の文字列の小さな部分だけである場合、使用componentsSeparatedByStringは非常に非効率的です。文字列全体を不必要に解析します。

解決策は、文字列の形式によって異なります。常に最初の括弧のペアにある部分文字列が必要な場合は、最初とrangeOfString最初のを取得するために使用する方が効率的です。次に、2 つの間の部分を抽出します。()

例 (適切なエラー チェックなし):

NSString *myString = @"13.5 Points-(19) 38 Points-(50) 50 Points-(215) 4.3 Points-105.8 Points-21";
NSRange openRange = [myString rangeOfString:@"("];
NSRange closeRange = [myString rangeOfString:@")"];

NSRange resultRange = NSMakeRange(openRange.location + 1, closeRange.location - openRange.location - 1);
NSString *result = [myString substringWithRange:resultRange];
于 2013-06-06T04:00:31.210 に答える