swift 5 : Index of a Character in String

标签 swift string indexof swift5

在 Swift 5 之前,我有这个扩展工作:

  fileprivate extension String {
        func indexOf(char: Character) -> Int? {
            return firstIndex(of: char)?.encodedOffset
        }
    }

现在,我收到一条已弃用的消息:

'encodedOffset' is deprecated: encodedOffset has been deprecated as most common usage is incorrect. Use `utf16Offset(in:)` to achieve the same behavior.

有没有比使用 utf16Offset(in:) 更简单的解决方案?

我只需要作为 Int 传回的字符位置的索引。

最佳答案

一段时间后我不得不承认我原来的答案是错误的。

在 Swift 中有两种方法:firstIndex(of:)lastIndex(of:)

两者都返回 Int? 表示 Array 中第一个/最后一个元素的索引,它等于传递的元素(如果有的话,否则返回 nil)。

因此,您应该避免使用自定义方法来获取索引,因为可能有两个相同的元素并且您不知道需要哪个索引。因此,请尝试考虑您的使用情况并决定哪种索引更适合您;首先或最后。 🙏


原答案:

utf16Offset(in:) 有什么问题?这是使用 Swift 5 的方式

fileprivate extension String {
    func indexOf(char: Character) -> Int? {
        return firstIndex(of: char)?.utf16Offset(in: self)
    }
}

关于 swift 5 : Index of a Character in String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55384721/

相关文章:

ios - 在通过代码呈现的另一个 ViewController 上呈现 AlertController

javascript - 如何测试数组项的文本是否包含子字符串?

javascript - 在查找数据中搜索元素数组

javascript - 只需要重置 Javascript 数组的索引

swift - 在表中显示对象状态(图标)

ios - 为 AWS AppSync 客户端 iOS Swift 启用缓存

swift - 如何清除TableView并重新加载数据?

javascript - 在 JavaScript 中比较字符串的最快方法是什么?

string - 如何显示字符串中的每个单词?

iphone - 无法在 UITextView 末尾附加空格