编辑这个页面须要登录或更高权限!

Swift 字符和字符串

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

什么是字符?

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

let someCharacter:Character

如何在Swift中声明和赋值字符?

您可以使用双引号“”指定与字符串相同的字符类型的值,但在引号“”内只能包含一个字符。

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

示例1:声明和分配字符

let someCharacter:Character = “H”
let specialCharacter:Character = “@”
print(someCharacter)
print(specialCharacter)

运行该程序时,输出为:

H
@

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

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

/*
 这将给出一个错误。
将类型更改为字符串可以修复该问题。
*/
let failableCharacter:Character = "H@"
print(failableCharacter)

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

Cannot convert value of type String to Character.(无法将字符串类型的值转换为字符。)

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

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

示例3:创建一个unicode字符

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

运行该程序时,输出为:

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

什么是字符串?

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

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. ”分别是用于创建字符串变量 someString 和 someMessage 的字符串。

对字符串的操作

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!

在上面的程序中,我们通过附加并使用+运算符创建了一个字符串 result。因此 helloStrworldStrprint(result),在屏幕上输出Hello,World

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

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

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

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

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

helloStr +=  worldStr
print(helloStr)

运行该程序时,输出为:

Hello, World!

注意在 helloStr 中使用了 var 而不是 let。如果您已经使用 let 定义了 helloStr 常量,那么以后不能使用 += 运算符更改它,并最终得到一个错误。因此,您必须定义 helloStr 变量。

字符串插值

这是一个简单的过程,一个字符串字面量,包括变量,常量等。假设你有一个玩家的名字和得分存储在两个常量中,如下:

let playerName = "Jack"
let playerScore = 99

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

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

let congratsMessage = "恭喜 " + playerName + "!. 您的最高分是 " + playerScore + "."
print(congratsMessage)

但是,以上方式可读性比较差。

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

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

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

let playerName = "Jack"
let playerScore = 99
let congratsMessage = "恭喜\(playerName)!. 您的最高分是 \(playerScore)."
print(congratsMessage)

运行该程序时,输出为:

恭喜 Jack!. 您的最高分是 99.

字符串内置的函数和属性:

1. isEmpty(判断是否为空)

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

示例9:isEmpty

var emptyString = ""
print(emptyString.isEmpty)

运行该程序时,输出为:

true

2.capitalized(单词大写)

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

示例10:大写

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

运行该程序时,输出为:

Hello, World!

3.uppercased 和 lowercased(字符串大写和小写)

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

示例11:uppercased()和lowercased()

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

运行该程序时,输出为:

HELLO, WORLD!
hello, world!

4.count (计数/长度)

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

示例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