3

如何从 aNSTextView中获取所选文本的字符串NSString

非常感谢您的帮助。

4

4 回答 4

7

一个 NSText 可以有多个选择。使用 TextEditapp 进行检查:在按住 CMD 的同时用鼠标选择一个字符串。因此,您可以选择任意数量的字符串。因此我认为,更常见的解决方案是使用:

NSArray *ranges = [myTextView selectedRanges];

然后一一提取字符串。

于 2012-12-25T16:30:29.877 回答
5

由于 NSTextView 是 NSText 的子类,因此您可以使用NSText实例方法来计算所选字符串,如下所示:

NSString *selected = [[myTextView string] 
                      substringWithRange:[myTextView selectedRange]];
于 2012-12-24T18:08:09.667 回答
2

Swift 5,根据@vauxhall 的回答处理多个 NSTextView 选择

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)])
    }
}
于 2021-02-19T16:39:14.327 回答
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)
于 2020-07-24T16:11:25.870 回答