swift 文章收集

Swift学习日记(二)

2016-01-01  本文已影响38人  哲歌

字符串可变性(String Mutability)

字符串插值 (String Interpolation)

字符串索引 (String Indices)

每一个String值都有一个关联的索引(index)类型,String.Index,它对应着字符串中的每一个Character的位置。

使用startIndex属性可以获取一个String的第一个Character的索引。使用endIndex属性可以获取最后一个Character的后一个位置的索引。因此,endIndex属性不能作为一个字符串的有效下标。如果String是空串,startIndexendIndex是相等的。

通过调用String.Indexpredecessor()方法,可以立即得到前面一个索引,调用successor()方法可以立即得到后面一个索引。任何一个String的索引都可以通过锁链作用的这些方法来获取另一个索引,也可以调用advancedBy(_:)方法来获取。但如果尝试获取出界的字符串索引,就会抛出一个运行时错误:

  let greeting = "Guten Tag!"
  greeting[greeting.startIndex]
  // G
  greeting[greeting.endIndex.predecessor()]
  // !
  greeting[greeting.startIndex.successor()]
  // u
  let index = greeting.startIndex.advancedBy(7)
  greeting[index]
  // a

试图获取越界索引对应的Character,将引发一个运行时错误。

greeting[greeting.endIndex] // error
greeting.endIndex.successor() // error

使用characters属性的indices属性会创建一个包含全部索引的范围(Range),用来在一个字符串中访问单个字符。

for index in greeting.characters.indices {
  print("\(greeting[index]) ", terminator: " ")
  }
  // 打印输出 "G u t e n   T a g !"

插入和删除 (Inserting and Removing)

前缀/后缀相等 (Prefix and Suffix Equality)

通过调用字符串的hasPrefix(_:)/hasSuffix(_:)方法来检查字符串是否拥有特定前缀/后缀,两个方法均接收一个String类型的参数,并返回一个布尔值。

下面的例子以一个字符串数组表示莎士比亚话剧《罗密欧与朱丽叶》中前两场的场景位置:

 let romeoAndJuliet = [
"Act 1 Scene 1: Verona, A public place",
"Act 1 Scene 2: Capulet's mansion",
"Act 1 Scene 3: A room in Capulet's mansion",
"Act 1 Scene 4: A street outside Capulet's mansion",
"Act 1 Scene 5: The Great Hall in Capulet's mansion",
"Act 2 Scene 1: Outside Capulet's mansion",
"Act 2 Scene 2: Capulet's orchard",
"Act 2 Scene 3: Outside Friar Lawrence's cell",
"Act 2 Scene 4: A street in Verona",
"Act 2 Scene 5: Capulet's mansion",
"Act 2 Scene 6: Friar Lawrence's cell"
]
上一篇 下一篇

猜你喜欢

热点阅读