如何在iOS中的特定字符后过滤字符串?

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:将扫描整个字符串,查找分隔符的每次出现.然后它创建一个包含所有子串的数组.当你需要大多数这些子串时,这很好.

当你只需要一个较大字符串的一部分时,这是非常浪费的.无需扫描整个字符串.无需创建阵列.没有必要获得所有其他子串.


Nir*_*att 8

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的回答表明,只要需要获得字符串的一小部分,就有更好的机制.只要只需要一小部分字符串,就可以使用它而不是这种方法.


Dha*_*ngh 5

尝试使用这个

        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