检查字符串中字符串的非第一个实例

瑞安·科库佐(Ryan Cocuzzo)

因此,获取另一个字符串中的字符串实例的方法是使用此String类扩展:

func indexOf(target: String) -> Int? {

        let range = (self as NSString).range(of: target)

        guard range.toRange() != nil else {
            return nil
        }

        return range.location

    }

但是,现在我正在寻找一种在字符串中获取字符串的第n个实例的方法。例如,如果我想在“展示房屋中的房屋显示陌生人”中获取“房屋”的第三个实例的索引。我该怎么做?

马丁·R

一种可能的解决方案,可以直接在Swift上运行String,而无需桥接NSString(也无需创建临时子字符串):

extension String {

    func index(of target: String, instance: Int = 1) -> Int? {
        precondition(!target.isEmpty)
        precondition(instance > 0)

        var found = 0 // Number of occurrences found so far.
        var pos = startIndex // Current search position.
        // Search for next occurrence of `target`.
        while let r = range(of: target, range: pos..<endIndex) {
            found += 1
            // Are we done?
            if found == instance {
                // Distance in # of characters:
                return distance(from: startIndex, to: r.lowerBound)
            }
            // Continue search after this occurrence.
            pos = r.upperBound
        }
        return nil
    }
}

例子:

let bStr = "Houses on the show Dr. House's PlayHouse house strange people"
let ls = "House"

if let idx = bStr.index(of: ls, instance: 3) {
    print(idx) // 35
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查字符串中的第一个字符

循环遍历列表中的字符串项并检查字符串项的第一个索引

简化代码-检查字符串中的第一个字符以匹配字符列表

检查字符串的第一个字符是否包含数组中的值

检查字符串中单词的第一个字符以@开头

检查字符串的第一个字符是否是 JavaScript 中的字母

检查字符串中的第一个单词是否符合 SQL 中的条件

如何检查字符串的第一个单词是否在 PHP 中的大写中?

Python检查字符串的第一个和最后一个字符

Julia:检查字符串中的第一个字母是否为小写首选语法

检查字符串的第一个和最后一个字符在PHP中是否相同

在python中的第一个实例之后删除字符串字符

使用switch语句检查字符串的第一个字符是否为大写

如何检查字符串中出现的第一个字符?

在javascript中返回字符串中的第一个非重复字符

检查 MariaDB 字符串值中的第一个小写字符

在 Python 中打印字符串的第一个非重复字符

查找字符串中的第一个非重复字符

.htaccess中的RewriteRule匹配字符串的第一个实例,但不匹配完整的字符串

检查字符串是否等于单词列表的第一个字母

C#删除重复项仅检查字符串数组的第一个元素

如何检查字符串的第一个字母是否为“echo”?

如何检查字符串在第一个“;say”之后是否不包含短语“;say”?

正则表达式仅检查字符串C#中的第一个字符

如何替换pd datafframe中字符串的第一个实例?

在R中的各列之间保留字符串的第一个实例

在检查第二个逗号分隔的字符串后得到的字符串不在第一个逗号分隔的字符串中

在 DrRacket 中,如何检查字符串是否包含一定数量的字符,以及如何确定字符串中的第一个字符是什么

从第一个检测词的字符串中检测子字符串