从NSTextView Objective-C获取选择(突出显示的文本)字符串

时间:2012-12-24 17:26:06

标签: objective-c xcode macos nsstring nstextview

如何从NSTextView NSString获取所选文字的字符串?

非常感谢您的帮助。

4 个答案:

答案 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)