我们怎样才能得到另一个线范围之前的线范围?
How can we get the line range before another line range?
我使用这段代码获取当前行范围:
extension UITextView {
var currentLineRange: NSRange {
let nsText = self.text as NSString
let currentRange = nsText.lineRange(for: self.selectedRange)
return currentRange
}
}
如何在另一个行之前获取行范围,例如:
func getLineRangeBefore(_ lineRange: NSRange) -> NSRange {
//...
}
一种方法是获取范围的行start,然后找到行开始之前位置的行范围:
extension NSString {
func getLineRangeBefore(_ lineRange: NSRange) -> NSRange? {
var lineStart = 0
getLineStart(&lineStart, end: nil, contentsEnd: nil, for: lineRange)
if lineStart == 0 {
return nil
}
return self.lineRange(for: NSRange(location: lineStart - 1, length: 0))
}
}
请注意,这应该 return 一个可选的 NSRange
因为范围可以包含在第一行中,在这种情况下,它之前没有行。
我使用这段代码获取当前行范围:
extension UITextView {
var currentLineRange: NSRange {
let nsText = self.text as NSString
let currentRange = nsText.lineRange(for: self.selectedRange)
return currentRange
}
}
如何在另一个行之前获取行范围,例如:
func getLineRangeBefore(_ lineRange: NSRange) -> NSRange {
//...
}
一种方法是获取范围的行start,然后找到行开始之前位置的行范围:
extension NSString {
func getLineRangeBefore(_ lineRange: NSRange) -> NSRange? {
var lineStart = 0
getLineStart(&lineStart, end: nil, contentsEnd: nil, for: lineRange)
if lineStart == 0 {
return nil
}
return self.lineRange(for: NSRange(location: lineStart - 1, length: 0))
}
}
请注意,这应该 return 一个可选的 NSRange
因为范围可以包含在第一行中,在这种情况下,它之前没有行。