【发布时间】:2012-12-11 00:57:20
【问题描述】:
如何从NSTextView 中获取选定文本的字符串作为NSString?
非常感谢您的帮助。
【问题讨论】:
标签: objective-c xcode macos nsstring nstextview
如何从NSTextView 中获取选定文本的字符串作为NSString?
非常感谢您的帮助。
【问题讨论】:
标签: objective-c xcode macos nsstring nstextview
一个 NSText 可以有多个选择。使用 TextEditapp 进行检查:在按住 CMD 的同时用鼠标选择一个字符串。因此,您可以选择任意数量的字符串。因此我认为,一个更常见的解决方案是使用:
NSArray *ranges = [myTextView selectedRanges];
然后一一提取字符串。
【讨论】:
由于 NSTextView 是 NSText 的子类,你可以像这样使用NSText 实例方法来找出选中的字符串:
NSString *selected = [[myTextView string]
substringWithRange:[myTextView selectedRange]];
【讨论】:
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)])
}
}
【讨论】:
斯威夫特
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)
【讨论】: