- 快速教程
 - 斯威夫特 - 主页
 - 斯威夫特 - 概述
 - Swift - 环境
 - Swift - 基本语法
 - Swift - 数据类型
 - Swift - 变量
 - Swift - 可选
 - Swift - 元组
 - Swift - 常量
 - Swift - 文字
 - Swift - 运算符
 - Swift - 决策
 - Swift - 循环
 - Swift - 字符串
 - 斯威夫特 - 角色
 - Swift - 数组
 - Swift - 套装
 - 斯威夫特 - 字典
 - Swift - 函数
 - Swift - 闭包
 - Swift - 枚举
 - Swift - 结构
 - Swift - 类
 - Swift - 属性
 - Swift - 方法
 - Swift - 下标
 - Swift - 继承
 - Swift - 初始化
 - Swift - 去初始化
 - Swift - ARC 概述
 - Swift - 可选链接
 - Swift - 类型转换
 - Swift - 扩展
 - Swift - 协议
 - Swift - 泛型
 - Swift - 访问控制
 
- 斯威夫特有用的资源
 - Swift - 在线编译
 - Swift - 快速指南
 - Swift - 有用的资源
 - 斯威夫特 - 讨论
 
Swift - 字符串
Swift 4 中的字符串是字符的有序集合,例如“Hello, World!” 它们由 Swift 4 数据类型String表示,而 String 又表示字符类型值的集合。
创建一个字符串
您可以通过使用字符串文字或创建 String 类的实例来创建 String,如下所示 -
// String creation using String literal
var stringA = "Hello, Swift 4!"
print( stringA )
// String creation using String instance
var stringB = String("Hello, Swift 4!")
print( stringB )
//Multiple line string
let stringC = """
Hey this is a
example of multiple Line
string by tutorialsPoint 
"""
print(stringC)
当上面的代码被编译并执行时,会产生以下结果
Hello, Swift 4! Hello, Swift 4! Hey this is a example of multiple Line string by tutorialsPoint
空字符串
您可以通过使用空字符串文字或创建 String 类的实例来创建空字符串,如下所示。您还可以使用布尔属性isEmpty检查字符串是否为空。
// Empty string creation using String literal
var stringA = ""
if stringA.isEmpty {
   print( "stringA is empty" )
} else {
   print( "stringA is not empty" )
}
// Empty string creation using String instance
let stringB = String()
if stringB.isEmpty {
   print( "stringB is empty" )
} else {
   print( "stringB is not empty" )
}
当上面的代码被编译并执行时,它会产生以下结果 -
stringA is empty stringB is empty
字符串常量
您可以指定您的字符串是否可以通过将其分配给变量来修改(或变异),或者通过使用let关键字将其分配给常量来指定它是常量,如下所示-
// stringA can be modified
var stringA = "Hello, Swift 4!"
stringA + = "--Readers--"
print( stringA )
// stringB can not be modified
let stringB = String("Hello, Swift 4!")
stringB + = "--Readers--"
print( stringB )
当上面的代码被编译并执行时,它会产生以下结果 -
Playground execution failed: error: <EXPR>:10:1: error: 'String' is not convertible to '@lvalue UInt8' stringB + = "--Readers--"
字符串插值
字符串插值是一种通过将常量、变量、文字和表达式的值包含在字符串文字中来构造新字符串值的方法。
插入到字符串文字中的每个项目(变量或常量)都用一对括号括起来,并以反斜杠为前缀。这是一个简单的例子 -
var varA = 20 let constA = 100 var varC:Float = 20.0 var stringA = "\(varA) times \(constA) is equal to \(varC * 100)" print( stringA )
当上面的代码被编译并执行时,它会产生以下结果 -
20 times 100 is equal to 2000.0
字符串连接
您可以使用 + 运算符连接两个字符串或一个字符串和一个字符或两个字符。这是一个简单的例子 -
let constA = "Hello," let constB = "World!" var stringA = constA + constB print( stringA )
当上面的代码被编译并执行时,它会产生以下结果 -
Hello,World!
字符串长度
Swift 4 字符串没有length属性,但您可以使用全局 count() 函数来计算字符串中的字符数。这是一个简单的例子 -
var varA = "Hello, Swift 4!" print( "\(varA), length is \((varA.count))" )
当上面的代码被编译并执行时,它会产生以下结果 -
Hello, Swift 4!, length is 15
字符串比较
您可以使用 == 运算符来比较两个字符串变量或常量。这是一个简单的例子 -
var varA = "Hello, Swift 4!"
var varB = "Hello, World!"
if varA == varB {
   print( "\(varA) and \(varB) are equal" )
} else {
   print( "\(varA) and \(varB) are not equal" )
}
当上面的代码被编译并执行时,它会产生以下结果 -
Hello, Swift 4! and Hello, World! are not equal
字符串迭代
在 swift 4 中,字符串又是值的集合,因此我们可以使用循环来迭代字符串。-
for chars in "ThisString" {
   print(chars, terminator: " ")
}
当上面的代码被编译并执行时,它会产生以下结果 -
T h i s S t r i n g
统一码字符串
您可以通过迭代字符串的 utf8 和 utf16 属性来访问字符串的 UTF-8 和 UTF-16 表示形式,如以下示例所示 -
var unicodeString = "Dog???"
print("UTF-8 Codes: ")
for code in unicodeString.utf8 {
   print("\(code) ")
}
print("\n")
print("UTF-16 Codes: ")
for code in unicodeString.utf16 {
   print("\(code) ")
}
当上面的代码被编译并执行时,它会产生以下结果 -
UTF-8 Codes: 68 111 103 63 63 63 UTF-16 Codes: 68 111 103 63 63 63
字符串函数和运算符
Swift 4 支持与字符串相关的多种方法和运算符 -
| 先生编号 | 功能/运算符和目的 | 
|---|---|
| 1 | 是空的 确定字符串是否为空的布尔值。  | 
| 2 | hasPrefix(前缀:字符串) 检查给定参数字符串是否作为字符串前缀存在的函数。  | 
| 3 | hasSuffix(后缀:字符串) 检查给定参数字符串是否作为字符串后缀存在的函数。  | 
| 4 | toInt() 将数字字符串值转换为整数的函数。  | 
| 5 | 数数() 用于计算字符串中字符数的全局函数。  | 
| 6 | UTF8 返回字符串的 UTF-8 表示形式的属性。  | 
| 7 | UTF16 返回字符串的 UTF-16 表示形式的属性。  | 
| 8 | unicode标量 返回字符串的 Unicode 标量表示形式的属性。  | 
| 9 | + 用于连接两个字符串、或一个字符串和一个字符、或两个字符的运算符。  | 
| 10 | += 将字符串或字符附加到现有字符串的运算符。  | 
| 11 | == 判断两个字符串是否相等的运算符。  | 
| 12 | < 执行字典顺序比较以确定一个字符串的计算值是否小于另一个字符串的运算符。  | 
| 13 | 起始索引 获取字符串起始索引处的值。  | 
| 14 | 结束索引 获取字符串结束索引处的值。  | 
| 15 | 指数 要一一访问索引。即字符串的所有字符一一对应。  | 
| 16 | 插入(“值”,位于:位置) 在某个位置插入一个值。  | 
| 17 号 | 
 删除(在:位置) 删除子范围(范围) 删除某个位置的值,或从字符串中删除一定范围的值。  | 
| 18 | 反转() 返回字符串的反转  |