说我想检查UITextView
中输入的最后5个字符是否是"鼠标"。我该怎么做呢?特别是在Swift中,因为字符串索引与Objective-C的不同,因为存储了表情符号等。
我似乎无法弄清楚这一点。请记住,最后n个字符可能不会在文本视图的末尾键入,光标可能位于文本的中间。
答案 0 :(得分:0)
您可以将def removePunctuationU(text):
from string import punctuation
return u' '.join(text.translate({ord(c): None for c in punctuation}).split())
与substringFromIndex
一起使用。因此,此代码可以获取最后5个字符。
textView.text
答案 1 :(得分:0)
此函数将返回textView中最后一个光标位置的最后n个字符,除非光标位置太靠近字符串的开头,在这种情况下它将从字符串的开头返回到光标。
要检查每个更改,请使ViewController成为UITextViewDelegate的委托 并实现textViewDidChange()
class ViewController: UIViewController, UITextViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
textView.delegate = self
}
func textViewDidChange(textView: UITextView) {
print(lastNChars(5, textView: textView)!)
}
func lastNChars(n: Int, textView: UITextView) -> String? {
if let selectedRange = textView.selectedTextRange {
let startPosition: UITextPosition = textView.beginningOfDocument
let cursorPosition = textView.offsetFromPosition(startPosition, toPosition: selectedRange.start)
let chars = textView.text as String
var lastNChars: Int!
if n > cursorPosition {
lastNChars = cursorPosition
} else {
lastNChars = n
}
let startOfIndex = chars.startIndex.advancedBy(cursorPosition - lastNChars)
let endOfIndex = chars.startIndex.advancedBy(cursorPosition)
let lastChars = chars.substringWithRange(startOfIndex ..< endOfIndex)
return lastChars
}
return nil
}
}
答案 2 :(得分:-1)
快速4,您只需使用textView.text.last