let word = "sample string"
let firstLetter = Character(word.substringToIndex(advance(word.startIndex,1)).uppercaseString)
我从教程中得到了上面的例子。任何人都可以知道他们的意思"进步"什么是" substringToIndex"和" substringWithRange"。
答案 0 :(得分:6)
此advance
语法来自Swift 1,现在不同了。
Swift 2
let firstLetter = Character(word.substringToIndex(word.startIndex.advancedBy(1)).uppercaseString)
advancedBy
方法沿着String移动当前索引。
使用substringToIndex
切片String的一部分,从String的开头开始,到advancedBy
定义的索引结束。
这里你在字符串中前进1,这意味着substringToIndex
将从字符串中获取第一个字符。
Swift 3
语法再次更改,我们现在使用substring
和index
并使用偏移量:
let firstLetter = Character(word.substring(to: word.index(word.startIndex, offsetBy: 1)).uppercased())
答案 1 :(得分:1)
<强> substringToIndex 强>
返回一个包含接收者字符的新字符串, 但不包括指定指数的那个。
返回值包含接收者字符的新字符串,但不包括anIndex中的字符。如果anIndex是 等于字符串的长度,返回接收者的副本。
<强> substringWithRange 强>
返回包含接收者字符的字符串对象 在给定的范围内。
返回值一个字符串对象,包含位于aRange内的接收者字符。
特殊注意事项此方法检测所有无效范围(包括负长度范围)。对于链接的应用程 针对OS X v10.6及更高版本,此错误会导致异常;对于 与早期版本链接的应用程序,此错误导致a 警告,每次执行应用程序时只显示一次。
有关详细信息,请访问Apple NSString Class Reference
答案 2 :(得分:1)
您的教程已过时。在Swift 2中不推荐advance
。不能随机访问Swift中的字符串,即没有word[0]
来获取字符串的第一个字母。相反,您需要一个Index
对象来指定角色的位置。您可以通过从另一个索引开始创建该索引,通常是字符串的startIndex
或endIndex
,然后将其推进到您想要的字符:
let word = "sample string"
let index0 = word.startIndex // the first letter, an 's'
let index6 = word.startIndex.advancedBy(6) // the seventh letter, the whitespace
substringToIndex
获取字符串左侧的所有字符,在指定的索引之前停止。这两个是等价的:
print("'\(word.substringToIndex(index6))'")
print("'\(word[index0..<index6])'")
两者都打印'sample'