'预先' swift中的关键字?

时间:2016-02-08 13:20:00

标签: ios swift

let word = "sample string"

let firstLetter = Character(word.substringToIndex(advance(word.startIndex,1)).uppercaseString)

我从教程中得到了上面的例子。任何人都可以知道他们的意思"进步"什么是" substringToIndex"和" substringWithRange"。

3 个答案:

答案 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

语法再次更改,我们现在使用substringindex并使用偏移量:

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对象来指定角色的位置。您可以通过从另一个索引开始创建该索引,通常是字符串的startIndexendIndex,然后将其推进到您想要的字符:

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'