我有这样的案例:
TextView textView =(TextView)findViewById(R.id.textView);
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());
String text = "<a href='http://www.google.com'> Google </a>";
textView.setText(Html.fromHtml(text));
最后一行生成运行时错误“致命错误:无法递增endIndex”。之所以发生这种情况,是因为swift不知道下一个指数在最大指数之后是什么。看起来这个解决方案仅适用于swift 1. *。但有没有办法简洁地解决这个问题的新版本? 谢谢你的回答。
答案 0 :(得分:4)
有两个问题:
fieldName.endIndex
是&#34;结束时的一个&#34;弦的位置,
它没有继承者。工作变体是( Swift 2.2 ):
let fieldName = "VERSION:"
let versionField = "VERSION:4.1"
if versionField.hasPrefix(fieldName) {
let version = versionField.substringFromIndex(
versionField.startIndex.advancedBy(fieldName.characters.count))
print(version) // 4.1
} else {
print("No version found")
}
或者:
if let range = versionField.rangeOfString(fieldName)
where range.startIndex == versionField.startIndex {
let version = versionField.substringFromIndex(range.endIndex)
print(version) // 4.1
} else {
print("No version found")
}
您可以删除约束
where range.startIndex == versionField.startIndex
如果字段应该在字符串中的任何位置找到。
Swift 3:
if versionField.hasPrefix(fieldName) {
let version = versionField.substring(
from: versionField.index(versionField.startIndex, offsetBy: fieldName.characters.count))
print(version) // 4.1
} else {
print("No version found")
}
或者,
if let range = versionField.range(of: fieldName),
range.lowerBound == versionField.startIndex {
let version = versionField.substring(from: range.upperBound)
print(version) // 4.1
} else {
print("No version found")
}