Swift - 识别 textView 中光标前的单词(带有特殊字符)

Swift - Identify word before cursor in textView (with special Characters)

我有一个扩展名,可以识别 return 光标前的单词:

extension UITextView {

var currentWord : String? {

    let beginning = beginningOfDocument

    if let start = position(from: beginning, offset: selectedRange.location),
        let end = position(from: start, offset: selectedRange.length) {

        let textRange = tokenizer.rangeEnclosingPosition(end, with: .word, inDirection: 1)

        if let textRange = textRange {
            return text(in: textRange)
        }
    }
    return nil
}

我正在使用 UItextGranularity.word 并且工作正常。

然而我的问题是:

如果在单词 i 的开头有一个 @,它将不会被 returned。 所以如果我有@jon,那么当前词就是jon。 有没有一种方法可以包含 @ 以便获得带有特殊字符的完整单词?

谢谢

UITextInputTokenizer 好像不行。您可以试试这个解决方案:

var currentWord: String? {
    let regex = try! NSRegularExpression(pattern: "\S+$")
    let textRange = NSRange(location: 0, length: selectedRange.location)
    if let range = regex.firstMatch(in: text, range: textRange)?.range {
        return String(text[Range(range, in: text)!])
    }
    return nil
}