我不确定它是否是XCode中的错误,或者我不了解Swift中的范围。这里是一些代码来显示范围如何工作:如何比较Swift中的范围?
let range = 0..<5
contains(range, 0) // true
contains(range, 5) // false
range.startIndex == 0 // true
range.endIndex == 5 // true
let str = "Hello, playground"
str.rangeOfString("Hello")! // 0..<5
太棒了!现在让我们使用它真正的代码:
let str = "Hello, playground"
if let range = str.rangeOfString("Hello") {
if range.startIndex == 0 {
print("str starts with 'Hello'")
}
}
我得到的线,上面写着if range.startIndex == 0 {
不能与类型的参数调用LIS“==”(String.index以下错误, IntegerLiteralConvertible )”
不错的答案。我认为所有这个仪式都是为了更好的Unicode支持。例如它支持像“ﷺ”这样的疯狂字符。我只是试过 – Mohsen 2014-10-29 23:57:32
确切的说,它就是这样的Unicode支持。基本上它可以让你一次跳一个字符,即使字符是多字节。 – 2014-10-30 00:05:36
@Mohsen这不是一个疯狂的角色,而是一个阿拉伯语的句子,他说:“和平在他身上”(صلىاللهعليهوآلهوسلم)穆斯林用来表扬先知。作为一种便利(因为它经常被使用),这个句子作为一个包装的连字字形存在(和其他许多字形一样)。希望它揭开一个谜:-) – 2015-09-09 11:53:06