在本教程中,您将学习Swift中的字符和字符串用法。您还将学习可以对字符串和字符执行的不同操作。
字符是单个符号(字母,数字等)。swift中的字符是Character类型,声明为:
let someCharacter:Character
您可以使用双引号“”指定与字符串相同的字符类型的值,但在引号“”内只能包含一个字符。
如果需要包含多个字符,则需要定义为String类型而不是Character。
let someCharacter:Character = “H” let specialCharacter:Character = “@” print(someCharacter) print(specialCharacter)
运行该程序时,输出为:
H @
但是,如果您尝试在字符内分配两个符号为
/* 这将给出一个错误。 将类型更改为字符串可以修复该问题。 */ let failableCharacter:Character = "H@" print(failableCharacter)
当您尝试运行上面的代码时,您将收到以下错误消息:
Cannot convert value of type String to Character.(无法将字符串类型的值转换为字符。)
您也可以使用unicodes为 emoji表情符号创建特殊类型的字符。您可以使用转义序列\u {n}创建unicode(unicode代码点,n为十六进制)。
let heartShape:Character = "\u{2665}" print(heartShape)
运行该程序时,输出为:
?
在上面的示例中,从代码U + 2665创建了一个心形字符。 尽管\u {2665}包含在双引号中,但是编译器不会将其视为String,因为我们使用了转义序列\u {n}。 包含在文字中的转义序列并不代表自身。
字符串只是字符的集合。Swift中的字符串是String类型,并声明为:
let someString:String
您可以使用字符串字面量以String类型分配值。字符串文字是用双引号" ",引起来的字符的集合。
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)
但是,以上方式可读性比较差。
所以,有一种使用字符串插值显示消息的简便方法。插值是在字符串文字中包含变量或常量的值的过程。
应该插入字符串字面量中的变量或常量用一对括号括起来( ),并以反斜杠为前缀(\)。
let playerName = "Jack" let playerScore = 99 let congratsMessage = "恭喜\(playerName)!. 您的最高分是 \(playerScore)." print(congratsMessage)
运行该程序时,输出为:
恭喜 Jack!. 您的最高分是 99.
此函数确定字符串是否为空。它返回true,如果字符串为空,否则返回false。
var emptyString = "" print(emptyString.isEmpty)
运行该程序时,输出为:
true
此属性用于大写字符串中的每个单词。
let someString = "hello, world!" print(someString.capitalized)
运行该程序时,输出为:
Hello, World!
大写函数将字符串转换为大写字母,小写函数将字符串转换为小写字母。
let someString = "Hello, World!" print(someString.uppercased()) print(someString.lowercased())
运行该程序时,输出为:
HELLO, WORLD! hello, world!
此属性用于计算字符串中的字符总数。
let someString = "Hello, World!" print(someString.count)
运行该程序时,输出为:
13
此函数确定字符串是否以特定字符开头,并返回一个布尔值。如果字符串前缀与提供的值匹配,则返回 true,否则返回 false。
let someString = "Hello, World!" print(someString.hasPrefix("Hell")) print(someString.hasPrefix("hell"))
运行该程序时,输出为:
true false
此函数确定字符串是否以特定字符结尾,并返回一个布尔值。如果字符串后缀与提供的值匹配,则返回 true,否则返回 false。
print(someString.hasSuffix("rld!")) print(someString.hasSuffix("Rld!"))
运行该程序时,输出为:
true false