簡體   English   中英

從 NSTextView Objective-C 獲取選擇(突出顯示的文本)字符串

[英]Get selection (highlighted text) string from NSTextView Objective-C

如何從NSTextView獲取選定文本的字符串作為NSString

非常感謝您的幫助。

一個 NSText 可以有多個選擇。 使用 TextEditapp 查看:在按下 CMD 的同時用鼠標選擇一個字符串。 因此,您可以根據需要選擇任意數量的字符串。 因此我認為,更常見的解決方案是使用:

NSArray *ranges = [myTextView selectedRanges];

然后一一提取字符串。

由於 NSTextView 是 NSText 的子類,因此您可以使用NSText實例方法來計算所選字符串,如下所示:

NSString *selected = [[myTextView string] 
                      substringWithRange:[myTextView selectedRange]];

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)])
    }
}

迅速

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM