ios - 查找字符串的范围

标签 ios swift uitextview

我有一些以下格式的字符串:

有 ______ 个上诉

有 ______ 头牛和 ______ 只羊

有 ______ 红花、______ 绿花和 ______ 黄花

其中 ______ 代表字符串的可编辑部分。

这些字符串包含在 UITextView 中,但我只希望 ______ 字段可编辑,其余字符串只读。

我尝试实现 "textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String)" 方法,以限制 ______ 存在范围内的编辑。但我在计算 ______ 字符串的范围时遇到了一些麻烦。

我对 UITextView 进行了子类化,添加了一个变量:

var characterWhereEditIsAllowed: Character = "_"

并尝试计算从第一次出现“characterWhereEditIsAllowed”到最后一次出现的范围,如下所示:

guard let editableChracter = editableCharacter else {
   return
}

guard let idx = text.characters.indexOf(editableChracter) else {
   return
}

editableCharacterStartIndex = text.startIndex.distanceTo(idx)

我一直在寻找 TextView 文本中最后一次出现“_”的索引。感谢您的帮助。

P.S:我尝试过使用“rangeOfString”方法,但由于“______”字段的大小不同,我无法检查特定长度的“字符串”。

最佳答案

使用正则表达式:

let text = "There is ______ red flowers, ______ green flowers and ______ yellow flowers"
let regex = try! NSRegularExpression(pattern: "_+", options: [])
let matchRanges = regex.matchesInString(text, options: [], range: NSMakeRange(0, text.characters.count)).map { $0.range }

print(matchRanges) // matchRanges is an Array<NSRange>

关于ios - 查找字符串的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32908066/

相关文章:

ios - 通过滑动从 UItextView 中选择文本

ios - 有没有办法确定 UILabel 中的文本结束坐标? (不是标签框矩形)

ios - 如何知道我的 WKWebview 派生 subview 何时加载到 Swift 中

ios - 从多个部分 UITableView 中的 UITableViewCell 获取 IndexPath 以响应通知

iOS 控制中心音乐控件在 iOS 11 更新中停止工作(remoteControlReceivedWithEvent 不称为 iOS 11)

iOS AppDelegate didReceiveRemoteNotification 未在后台通过蜂窝网络静默推送触发

带有自定义 View Controller 的 iOS 共享扩展

ios - 如何在 UITextView 中丢失边距/填充

ios - 开始使用 UITableView?

iphone - objective c type cast an object based on an NSString 类名