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
}
我有一个扩展名,可以识别 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
}