📜  Swift的字符和字符串

📅  最后修改于: 2020-10-09 15:45:49             🧑  作者: Mango

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

 

什么是字符?

字符是单个符号(字母,数字等)。 字符 SWIFT是Character类型,并声明如下:

let someCharacter:Character

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

您可以使用双引号指定字符类型的值相同字符串" " ,但它应该只包含引号内的单个字符 " "

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

示例1:声明和分配字符
let someCharacter:Character = “H"
let specialCharacter:Character = “@"
print(someCharacter)
print(specialCharacter)

运行该程序时,输出为:

H
@

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

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

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

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

Cannot convert value of type String to Character.

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

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

示例3:创建一个unicode 字符
let heartShape:Character = "\u{2665}"
print(heartShape)

运行该程序时,输出为:

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


什么是字符串?

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

let someString:String

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

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

示例4:声明和分配字符串
let someString:String = "Hello, world!"
let someMessage = "I love Swift."
print(someString)
print(someMessage)

运行该程序时,输出为:

Hello, world!
I love Swift.

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


对字符串的操作

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

字符串比较

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

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

let someString = "Hello, world!"
let someMessage = "I love Swift."
let someAnotherMessage = "Hello, world!"
print(someString == someMessage)
print(someString == someAnotherMessage)

运行该程序时,输出为:

false
true

字符串串联

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

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

let helloStr = "Hello, "
let worldStr = "World"
var result = helloStr + worldStr
print(result)
result.append("!")
print(result)

运行该程序时,输出为:

Hello, World
Hello, World!

在上面的程序中,我们通过使用+ 运算符将helloStrworldStr追加创建字符串结果。因此, print(result)在屏幕上输出Hello,World

您还可以使用append方法附加任何字符或字符串 。 result.append("!")附加! 字符 字符串的结尾。因此, print(result)输出Hello,World!屏幕上。

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

 

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

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

var helloStr = "Hello, "
let worldStr = "World!"

helloStr +=  worldStr
print(helloStr)

运行该程序时,输出为:

Hello, World!

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


字符串插值

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

let playerName = "Jack"
let playerScore = 99

现在,您需要向玩家显示一条消息,“恭喜杰克!您的最高分是99。”在这里,您需要一种在单个字符串使用常量值的方法。

这可以通过使用字符串串联来实现:

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

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

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

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

示例8:Swift中的字符串插值
let playerName = "Jack"
let playerScore = 99
let congratsMessage = "Congratulations \(playerName)!. Your highest score is \(playerScore)."
print(congratsMessage)

运行该程序时,输出为:

Congratulations Jack!. Your highest score is 99.

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

1. isEmpty

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

示例9:isEmpty
var emptyString = ""
print(emptyString.isEmpty)

运行该程序时,输出为:

true

2.大写

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

示例10:大写
let someString = "hello, world!"
print(someString.capitalized)

运行该程序时,输出为:

Hello, World!

3.大写和小写

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

示例11:uppercased()和lowercased()
let someString = "Hello, World!"
print(someString.uppercased())
print(someString.lowercased())

运行该程序时,输出为:

HELLO, WORLD!
hello, world!

4.长度/计数

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

示例12:计数
let someString = "Hello, World!"
print(someString.count)

运行该程序时,输出为:

13

5. hasPrefix

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

示例13:hasPrefix()
let someString = "Hello, World!"
print(someString.hasPrefix("Hell"))
print(someString.hasPrefix("hell"))

运行该程序时,输出为:

true
false

6. hasSuffix

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

示例14:hasSuffix()
print(someString.hasSuffix("rld!"))
print(someString.hasSuffix("Rld!"))

运行该程序时,输出为:

true
false