美文网首页
iOS 查询字符串的位置

iOS 查询字符串的位置

作者: MQ_Twist | 来源:发表于2022-05-24 14:25 被阅读0次

蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。

前言

今天老高突然问我一个问题,查询字符串的位置,且是所有位置。有点绕口,举个例子:
现有字符串abc is abc, and abc,查找abc的所有range

正文

首先大脑的第一反应rangeOfString是不能实现的,该方法是找第一出现的range。于是,稍加思考,再一百度总结出下面2种方法。

  • 方法一

换个方法,使用

- (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch;

后面2个参数

mask: 搜索方式;
rangeOfReceiverToSearch:搜索范围;

对NSStringCompareOptions不是很了解的小伙伴可以查看笔者之前的文章 —— iOS NSStringCompareOptions
上面的方法可以指定搜索范围,那就递归改变搜索范围方式进行搜索。整体代码如下:

NSString *text = @"abc is abc, and abc";
NSString *searchStr = @"abc";
NSRange range = [text rangeOfString:searchStr];
while (range.location != NSNotFound || range.length != 0) {
    NSLog(@">>>1:%@", NSStringFromRange(range));
    NSUInteger hadSearchedRange = range.location + range.length;
    NSRange resetRange = NSMakeRange(hadSearchedRange, text.length - hadSearchedRange);
    range = [text rangeOfString:searchStr options:NSCaseInsensitiveSearch range:resetRange];
}

打印结果如图1:


1.png
  • 方法二

使用NSRegularExpression,更加高级的类,里面有更加高级的api,不多哔哔,上代码:

NSString *text = @"abc is abc, and abc";
NSError *error;
NSRegularExpression *regular = [[NSRegularExpression alloc] initWithPattern:@"abc"
options:NSRegularExpressionCaseInsensitive error:&error];
if (!error) {
    NSArray *results = [regular matchesInString:text options:NSMatchingReportProgress range:NSMakeRange(0,
text.length)];
    for (NSTextCheckingResult *result in results) {
        NSLog(@">>>2:%@", NSStringFromRange(result.range));
    }
}
else {
    NSLog(@"%@", error);
}

打印结果如图2:


2.png

后记

可能还有其他种方法,以后看到后再做整理,欢迎大佬留言。

相关文章

  • iOS 查询字符串的位置

    蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。 前言 今天老高突然问我一个问题,查询字符串的位置,且是所有...

  • (String)字符串的简单应用

    字符串的截取 字符串的比较 字符串包含...内容(以...结尾,以...开头) 查询字符串所在位置 字符串的连接 ...

  • 简单JS问题总结

    1、用JS写一个函数,查询字符串中'hello'的所有位置? 2、用JS写一个函数,查询字符串中最长的单词? 3、...

  • iOS开发——获取字符串中多个相同字符串的所有range

    1、初级(确定的子字符串) 当NSString中含有多个相同的子字符串,而又需要查询所有子字符串的位置时,单纯的使...

  • python中find和index的区别

    find方法和index方法都是用来查找目标字符串的索引位置,当目标字符串不存在,find查询返回-1,index...

  • es6常用简单知识点

    1、查询是否包含赢一个字符串'xxxx'.includes(x,i);//x子字符串,i起始位置2、forEach...

  • day08字符串列表元组字典应用

    上周已经学过一些字符串类型的操作,今天将他们补全;.fine(''),查询字符串对应的索引位置,并且可以自由设定查...

  • iOS 字符串截取、iOS 字符串替换、iOS 字符串分隔、iO

    iOS之字符串截取、iOS 字符串替换、iOS字符串分隔、iOS之字符串匹配、截取字符串、匹配字符串、分隔字符串 ...

  • Vim查找

    使用vim进行字符串的查找是一项日常的技能。 一、全匹配 从当前位置开始查找 查询的目标字符串是“abc”。 在命...

  • R中不时用到的小函数

    grep 查询某一pattern在字符串向量中出现的位置 grepl 同grep,返回T或F melt函数 sub...

网友评论

      本文标题:iOS 查询字符串的位置

      本文链接:https://www.haomeiwen.com/subject/cqrdyrtx.html