NSScanner扫描字符串
字符串 扫描
2023-09-11 14:14:25 时间
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;
相关文章
- 从C#到Python手把手教你用Python实现内存扫描获取指定字符串
- C#按指定长度分割字符串
- C++中字符串的实现
- 适用于DELPHI2007及以下版本的BytesOf和StringOf (字符串转TBtyes)
- 字符串补全方法 padStart() 和 padEnd()
- JS leetcode 翻转字符串里的单词 题解分析
- MFC学习之yyyy-mm-dd hh:mm:ss 字符串转时间戳
- iOS中的字符串扫描类NSScanner
- JS 判断某个字符串是否存在与数组中
- Shell基础:什么是shell脚本、2种脚本解释器、#!约定解释器类型、运行shell脚本的2种方式、shell变量命令规范/赋值/如何使用/只读变量/删除变量/变量类型、shell字符串及其常用方法、shell数组及其常用方法、shell注释
- Java随机生成字符串举例
- 如何在 Flutter 和 Dart 中检查数字字符串
- 前端性能优化:使用Array.prototype.join代替字符串连接
- 字符串 巩固
- C# 字符串替换第一次或者最后一次出现的匹配项