Swift中的字符串

117 阅读2分钟

本教程属于Swift系列

字符串是编程中最受欢迎的工具之一。

在Swift中,可以使用字符串字面的语法来定义一个字符串。

let name = "Roger"

我们使用双引号。单引号不是有效的字符串定界符。

一个字符串可以横跨多行,使用3个双引号。

let description = """
	a long
  	long 
      	long description
	"""

你可以使用字符串插值将一个表达式嵌入到一个字符串中。

let age = 8

let name = """
	Roger, age \(age)
	Next year he will be \(age + 1)
	"""

+ 操作符将两个字符串连接起来。

var name = "Roger"
name = name + " The Dog"

+= 操作符将文本追加到一个字符串中。

var name = "Roger"
name += " The Dog"

或者使用append(_:) 方法。

var name = "Roger"
name.append(" The Dog")

你可以使用count 字符串属性来计算一个字符串中的字符。

let name = "Roger"
name.count //5

任何字符串都带有一组有用的方法,例如。

  • removeFirst() 删除第一个字符
  • removeLast() 去除最后一个字符
  • lowercased() 获得一个新的字符串,小写字母
  • uppercased() 得到一个新的字符串,大写的
  • starts(with:) 如果字符串以特定的子串开始,则返回 "true"。
  • contains() 如果字符串包含一个特定的字符,则返回 "true"。

以及更多,更多。

name[1]当你需要在字符串中引用一个项目时,由于Swift中的字符串是unicode,我们不能简单地使用let name = "Roger" 中的字母o 。你需要用索引来工作。

任何字符串都会用startIndex 属性提供起始索引。

let name = "Roger"
name.startIndex //0

要计算字符串中的特定索引,你要用index(i:offsetBy:) 方法来计算它。

let name = "Roger"
let i = name.index(name.startIndex, offsetBy: 2)
name[i] //"g"

索引也可以用来获得一个子串。

let name = "Roger"
let i = name.index(name.startIndex, offsetBy: 2)
name.suffix(from: i) //"ger"

//Or using the subscript:

name[i...] //"ger"

当你从一个字符串中得到一个子串时,结果的类型是Substring ,而不是String

let name = "Roger"
let i = name.index(name.startIndex, offsetBy: 2)
print(type(of: name.suffix(from: i))) 
//Substring

子串的内存效率更高,因为你并没有得到一个新的字符串,而是在幕后使用相同的内存结构,尽管当你经常处理字符串的时候需要小心,因为你可以实现一些优化。

字符串是一个集合,它们可以在循环中进行迭代。