如何从NSTextView
NSString
获取所选文字的字符串?
非常感谢您的帮助。
答案 0 :(得分:6)
NSText只能有一个选择。使用TextEditapp检查它:在按下CMD的同时用鼠标选择一个字符串。因此,您可以根据需要选择任意数量的字符串。因此我认为,更常见的解决方案是使用:
NSArray *ranges = [myTextView selectedRanges];
然后逐个提取字符串。
答案 1 :(得分:5)
由于NSTextView是NSText的子类,因此您可以使用NSText实例方法来计算所选字符串,如下所示:
NSString *selected = [[myTextView string]
substringWithRange:[myTextView selectedRange]];
答案 2 :(得分:1)
Swift 5,处理多选的 NSTextView 基于@vauxhall 的回答
extension NSTextView {
var selectedText: String {
var text = ""
for case let range as NSRange in self.selectedRanges {
text.append(string[range]+"\n")
}
text = String(text.dropLast())
return text
}
}
extension String {
subscript (_ range: NSRange) -> Self {
.init(self[index(startIndex, offsetBy: range.lowerBound) ..< index(startIndex, offsetBy: range.upperBound)])
}
}
答案 3 :(得分:0)
迅速
extension NSTextView {
var selectedText: String {
string[selectedRange()]
}
}
extension String {
subscript (_ range: NSRange) -> Self {
.init(self[index(startIndex, offsetBy: range.lowerBound) ..< index(startIndex, offsetBy: range.upperBound)])
}
}
用法
let textView = NSTextView()
print(textView.selectedText)