你如何从下方的长串中提取“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);
答案 0 :(得分:4)
当您想要的只是原始字符串的一小部分时,使用componentsSeparatedByString
是非常低效的。你不必要地解析整个字符串。
解决方案实际上取决于字符串的格式。如果您希望子字符串始终位于第一对括号中,那么使用rangeOfString
获取第一个(
和第一个)
会更有效。然后你在两者之间提取它。
示例(没有任何正确的错误检查):
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];
答案 1 :(得分:0)
试试这个
NSString *myString = @"13.5 Points-(19) 38 Points-(50) 50 Points-(215) 4.3 Points-105.8 Points-21";
NSArray *strArr = [myString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString: @"()"]];
NSLog(@"myString..%@",[strArr objectAtIndex:1]);// myString..19