我有一些以下格式的字符串:
有 ______ 个上诉
有 ______ 头牛和 ______ 只羊
有 ______ 红花、______ 绿花和 ______ 黄花
其中 ______ 代表字符串的可编辑部分。
这些字符串包含在 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/