我正在使用 components(separatedBy)
段落分隔功能。
let components = UItextView.text.components(separatedBy: “\n”)
这将返回一个字符串数组。我需要能够获得范围的信息以及每个范围的“id”以便能够识别它。我不知道我会怎么做。我是否需要以某种方式使用 token ?
编辑:我所说的“id”只是一个标识符,我必须能够识别哪个段落与哪个组件相关。这是因为如果在 2 个已存在的段落之间添加一个段落,则通过数组进行计数将不准确。
对于范围,我想要分隔段落的 Swift 范围。示例:Range<String.Index>(3..<8)
最佳答案
比 PGDev 建议的更实用的方法:
let str = """
Paragraph 1
Paragraph 2
Paragraph 3
Paragraph 4
"""
struct ParagraphModel: Hashable {
let text: String
let range: Range<String.Index>
init(withText text: String, range: Range<String.Index>) {
self.text = text
self.range = range
}
func hash(into hasher: inout Hasher) {
hasher.combine(text)
hasher.combine(range.lowerBound)
hasher.combine(range.upperBound)
}
}
let components = str.components(separatedBy: "\n")
let models = components.compactMap { component -> ParagraphModel? in
if let range = str.range(of: component) {
return ParagraphModel(withText: component, range: range)
}
return nil
}
id
将是模型的 hashValue
。
关于ios - 在 TextView 中使用 separatedBy 函数获取范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56524902/