Mar*_*rco 3 string uitextview ios swift
我有一个扩展,可以识别并返回光标之前的单词:
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
}
Run Code Online (Sandbox Code Playgroud)
我正在使用UItextGranularity.word并正常工作。
但是我的问题是这样的:
如果单词的开头有@,则不会返回。因此,如果我有@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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |