原文: https://www.programiz.com/swift-programming/characters-strings

在本教程中,您将学习 Swift 中的字符和字符串用法。 您还将学习可以对字符串和字符执行的不同操作。

什么是字符?

字符是单个符号(字母,数字等)。 swift 中的字符为Character类型,并声明为:

  1. let someCharacter:Character

如何在 Swift 中声明和分配字符?

您可以使用双引号" "分配与String相同的字符类型的值,但在引号" "内仅应包含单字符

如果需要包含多个字符,则需要将其定义为String而不是Character

示例 1:声明和分配字符

  1. let someCharacter:Character = "H"
  2. let specialCharacter:Character = "@"
  3. print(someCharacter)
  4. print(specialCharacter)

运行该程序时,输出为:

  1. H
  2. @

示例 2:分配多个字符(无效)

但是,如果您尝试在字符内分配两个符号为

  1. /*
  2. This will give an error
  3. Changing the type to String will fix it.
  4. */
  5. let failableCharacter:Character = "H@"
  6. print(failableCharacter)

当您尝试运行上面的代码时,您将收到以下错误消息:

  1. Cannot convert value of type String to Character.

使用 Unicode 和转义序列创建字符

您也可以使用 Unicode 为表情符号创建特殊类型的字符。 您可以使用转义序列\u{n}创建 unicode(unicode 代码点,n 为十六进制)。

示例 3:创建一个 unicode 字符

  1. let heartShape:Character = "\u{2665}"
  2. print(heartShape)

运行该程序时,输出为:

在上面的示例中,从代码U+2665创建了一个心形字符。 尽管\u{2665}包含在双引号中,但是编译器不会将其视为String,因为我们使用了转义序列 \u{n}。 包含在字面值中的转义序列并不代表自身。


什么是字符串?

字符串只是字符的集合。 Swift 中的字符串为String类型,并声明为:

  1. let someString:String

如何在 Swift 中声明和分配字符串?

您可以使用字符串字面值String类型分配值。 字符串字面值是用双引号" "包围的字符的集合。

示例 4:声明和分配字符串

  1. let someString:String = "Hello, world!"
  2. let someMessage = "I love Swift."
  3. print(someString)
  4. print(someMessage)

运行该程序时,输出为:

  1. Hello, world!
  2. I love Swift.

这里,"Hello, world!""I love Swift."都是用于分别创建字符串变量someStringsomeMessage的字符串字面值。


字符串操作

String中有一些内置的函数和属性来处理最常用的操作。 例如:要连接字符串,请将其更改为大写或大写。 让我们在下面探索一些常用的操作:

字符串比较

您可以使用比较运算符 (==)来简单地检查两个字符串是否相等。 如果两个字符串相等,则运算符返回true,否则返回false

示例 5:Swift 中的字符串比较

  1. let someString = "Hello, world!"
  2. let someMessage = "I love Swift."
  3. let someAnotherMessage = "Hello, world!"
  4. print(someString == someMessage)
  5. print(someString == someAnotherMessage)

运行该程序时,输出为:

  1. false
  2. true

字符串连接

可以使用加法运算符 (+)或使用复合赋值运算符 (+=)将两个不同的字符串值相加。 您也可以使用append方法在字符串中附加一个字符/字符串。

示例 6:Swift 中的字符串连接

  1. let helloStr = "Hello, "
  2. let worldStr = "World"
  3. var result = helloStr + worldStr
  4. print(result)
  5. result.append("!")
  6. print(result)

运行该程序时,输出为:

  1. Hello, World
  2. Hello, World!

在上述程序中,我们使用+运算符附加了helloStrworldStr,从而创建了字符串结果。 因此,print(result)在屏幕上输出Hello, World

您也可以使用append方法附加任何字符或字符串。result.append("!")在字符串的末尾附加一个!字符。 因此,print(result)输出Hello, World!

使用高级赋值运算符的字符串连接

我们还可以使用高级赋值运算符(+=)附加字符串。

示例 7:使用+=运算符的字符串连接

  1. var helloStr = "Hello, "
  2. let worldStr = "World!"
  3. helloStr += worldStr
  4. print(helloStr)

运行该程序时,输出为:

  1. Hello, World!

注意在helloStr中使用var代替let。 如果使用let定义了helloStr一个常量,则以后不能使用+=运算符对其进行更改,最终会出现错误。 因此,您必须定义helloStr变量。


字符串插值

这是求值包含变量,常量等组成的字符串字面值的简单过程。假设您的球员姓名和得分存储在两个常量中,如下所示:

  1. let playerName = "Jack"
  2. let playerScore = 99

现在,您需要向玩家显示一条消息,Congratulations !. Your highest score is 99.。 在这里,您需要一种在单个字符串中使用常量值的方法。

可以使用以下字符串连接来实现:

  1. let congratsMessage = "Congratulations " + playerName + "!. Your highest score is " + playerScore + "."
  2. print(congratsMessage)

但是,您会看到这很快就会变得混乱。 您必须注意Congratulationsis后面的空格。 另外,如果必须使用两个以上的常量/变量,它将变得不可读。

有一种使用字符串插值显示消息的简便方法。 插值是在字符串字面值中包含变量或常量的值的过程。

应该插入字符串字面值中的变量或常量用一对括号( )包裹,并以反斜杠(\)作为前缀。

示例 8:Swift 中的字符串插值

  1. let playerName = "Jack"
  2. let playerScore = 99
  3. let congratsMessage = "Congratulations \(playerName)!. Your highest score is \(playerScore)."
  4. print(congratsMessage)

运行该程序时,输出为:

  1. Congratulations Jack!. Your highest score is 99.

一些有用的String内置函数&变量:

1. isEmpty

此函数确定字符串是否为空。 如果字符串为空,则返回true,否则返回false

示例 9:isEmpty

  1. var emptyString = ""
  2. print(emptyString.isEmpty)

运行该程序时,输出为:

  1. true

2.capitalized

此属性用于大写字符串中的每个单词。

示例 10:capitalized

  1. let someString = "hello, world!"
  2. print(someString.capitalized)

运行该程序时,输出为:

  1. Hello, World!

3.大写和小写

大写函数将字符串转换为大写字母,小写函数将字符串转换为小写字母。

示例 11:uppercased()lowercased()

  1. let someString = "Hello, World!"
  2. print(someString.uppercased())
  3. print(someString.lowercased())

运行该程序时,输出为:

  1. HELLO, WORLD!
  2. hello, world!

4.长度/count

此属性用于计算字符串中的字符总数。

示例 12:count

  1. let someString = "Hello, World!"
  2. print(someString.count)

运行该程序时,输出为:

  1. 13

5. hasPrefix

此函数确定字符串是否以某些字符开头并返回布尔值。 如果字符串前缀与提供的值匹配,则返回true,否则返回false

示例 13:hasPrefix()

  1. let someString = "Hello, World!"
  2. print(someString.hasPrefix("Hell"))
  3. print(someString.hasPrefix("hell"))

运行该程序时,输出为:

  1. true
  2. false

6. hasSuffix

此函数确定字符串是否以某些字符结尾,并返回布尔值。 如果字符串后缀与提供的值匹配,则返回true,否则返回false

示例 14:hasSuffix()

  1. print(someString.hasSuffix("rld!"))
  2. print(someString.hasSuffix("Rld!"))

运行该程序时,输出为:

  1. true
  2. false