Fra*_*s F 0 nsstring ios nsscanner
我想在字符'='后过滤字符串.例如,如果8 + 9 = 17我的输出应为17.我可以使用NSScanner在'='之前过滤字符,如何进行反向??? 我需要一种有效的方法来实现这一点,而无需使用componentsSeparatedByString或创建数组
rma*_*ddy 12
每个人似乎都喜欢使用componentsSeparatedByString,但当你只想要一个字符串的一部分时效率很低.
试试这个:
NSString *str = @"8+9=17";
NSRange equalRange = [str rangeOfString:@"=" options:NSBackwardsSearch];
if (equalRange.location != NSNotFound) {
NSString *result = [str substringFromIndex:equalRange.location + equalRange.length];
NSLog(@"The result = %@", result);
} else {
NSLog(@"There is no = in the string");
}
Run Code Online (Sandbox Code Playgroud)
更新:
注 - 对于此特定示例,如果仅执行一次,效率差异可忽略不计.
但一般来说,使用componentsSeparatedByString:将扫描整个字符串,查找分隔符的每次出现.然后它创建一个包含所有子串的数组.当你需要大多数这些子串时,这很好.
当你只需要一个较大字符串的一部分时,这是非常浪费的.无需扫描整个字符串.无需创建阵列.没有必要获得所有其他子串.
NSArray * array = [string componentsSeparatedByString:@"="];
if (array)
{
NSString * desiredString = (NSString *)[array lastObject]; //or whichever the index
}
else
{
NSLog(@""); //report error - = not found. Of array could somehow be not created.
}
Run Code Online (Sandbox Code Playgroud)
注意: 虽然这是非常流行的拆分解决方案,但只要每个由分隔符字符串分隔的子字符串都需要时,它就值得尝试.rmaddy的回答表明,只要需要获得字符串的一小部分,就有更好的机制.只要只需要一小部分字符串,就可以使用它而不是这种方法.
尝试使用这个
NSArray *arr = [string componentsSeparatedByString:@"="];
if (arr.count > 0)
{
NSString * firstString = [arr objectAtIndex:0];
NSString * secondString = [arr objectAtIndex:1];
NSLog(@"First String %@",firstString);
NSLog(@"Second String %@",secondString);
}
Run Code Online (Sandbox Code Playgroud)
产量
第一个字符串8 + 9
第二串17
| 归档时间: |
|
| 查看次数: |
7013 次 |
| 最近记录: |