NSScanner扫描字符串

博客介绍了NSScanner扫描字符串的两个方法,scanString用于判断当前扫描指针所指字符串是否以目标字符开头,若是则移动指针并存储目标字符串;scanUpToString则从开头扫描到首次出现目标字符,指针停在目标字符前并存储前面内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NSScanner扫描字符串用到scanString和scanUpToString两个方法。

  • scanString:
- (BOOL)scanString:(NSString *)string intoString:(NSString * _Nullable * _Nullable)result;

判断当前扫描指针所指的字符串是否是以目标字符string开头, 若是则将指针停留在目标string之后,将目标字符串string存入result中,返回YES,否则NO。

  • scanUpToString
- (BOOL)scanUpToString:(NSString *)string intoString:(NSString * _Nullable * _Nullable)result;

扫描指针从开头一直扫描到有首次出现目标字符string为止,指针停留在目标string之前,将目标字符前面的全部内容存入result中

  • 示例:
    NSString *text = nil;
    NSString *content = @"aaa[bbbb]ccc";
    NSScanner *theScanner = [NSScanner scannerWithString:content];
    while (!theScanner.isAtEnd) {    // 判断是否扫描完毕
        [theScanner scanString:@"[" intoString:&text];
        NSLog(@"%@", text);    // 返回nil
        [theScanner scanUpToString:@"[" intoString:&text];
        NSLog(@"%@", text);    // 返回aaa[
        BOOL result = [theScanner scanString:@"[" intoString:&text];
        NSLog(@"%@", text);    // 返回[
        if (!result) {
            //没有找到[
            break;
        }
        [theScanner scanUpToString:@"]" intoString:&text];
        NSLog(@"%@", text);    // 返回bbbb
    }
  • NSScanner属性详解
// 要扫描的字符串
@property (readonly, copy) NSString *string;

// 下次扫描开始的位置,如果该值超出了string的区域,将会引起NSRangeException
@property NSUInteger scanLocation;

// 在扫描时被跳过的字符集,默认是空白格和回车键。
// 被跳过的字符集优先于扫描的字符集:例如一个scanner被跳过的字符集为空格,通过scanInt:去查找字符串中的整型数时,首先做的不是扫描,而是跳过空格,直到找到十进制数据或者其他的字符。在字符被扫描的时候,跳过功能就失效了。如果你扫描的字符和跳过的字符是一样的,结果将是未知的。被跳过的字符是一个唯一值,scanner不会将忽略大小写的功能应用于它,也不会用这些字符做一些组合
@property (nullable, copy) NSCharacterSet *charactersToBeSkipped;

// 是否区分字符串中大小写的标志。默认为NO,注意:该设置不会应用到被跳过的字符集
@property BOOL caseSensitive;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值