声明,由于环境限制 ,swfit 学习测试时,手边没有现成的Xcode 提供测试,而是使用网页的Swift测试 工具,因网页工具的局限,存在部分语句用法无法通过编译,故,下文会出现“需要验证”的字样。由于样例来源为前文提到,所以样例多半可以在xcode 运行,但没有测试不敢保证。
- 字符串字面量
字符串字面量是由双引号 ( "" ) 包裹着的具有固定顺序的文本字符集
字符串字面量可以用于为常量和变量提供
初始值
例如 let str = "Hello World"
- 初始化空字符串
要创建一个空字符串作为初始值,可以将空的字符串字面量赋值给变量
var emptyStr = "" //空字符串
这里不可将nil做赋值【'nil' requires a contextual type】
var test = String()
var test1 = ""
print(test)
print (test1)
以上两个字符串test 与 test1 都为"" 不过test的赋值使用String 方法 【调用String 并创建一个新的字符串"对象"】
var test = String()
var test1 :String?
print(test.isEmpty) //isEmpty 判断字符串是否为空 如果是"" 返回true
print (test1?.isEmpty) //这里test1 因为没有初始化,可选值为nil //
这里 ! 解包报错 也就是说 如果字符串是nil 就无法进行解包
- 字符串可变性
将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改
var str = "Hello " //这里是var ,而let 表示常量 一旦初始化 便不可修改
str += "World" //对str 进行修改【
这里进行了添加】
print(str)
在 Objective-C 和 Cocoa 中,您需要通过选择两个不同的类( NSString 和NSMutableString )来指定字符串是否可以被修改
- 字符串是值类型
Swift 的String 类型是值类型
创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行
值拷贝
任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作
默认字符串拷贝的方式保证了在函数/方法中传递的是字符串的值
无论该值来自于哪里,在确信传递的字符串不会被修改,除非你自己去修改它
- 使用字符
通过for-in 循环来遍历字符串中的characters 属性来获取每一个字符的值
for character in "Test1@#".characters {
print(character)
}
/*
T
e
s
t
1
@
#
*/
let test :Character = "?" //使用Character 给字符串赋单个字符值,
注意这里只能是一个字符,如果超过一个字符就会报错
print(test)// ?
let catCharacter :[Character] = ["C","a","t","!","?"] //这里将单个字符定义在数据字典中
let catStr = String(catCharacter) //String 方法将数据字典中的字符进行拼接转为字符串 //这里只能是字符转为字符串 ,而不能进行字符串拼接操作
print(catStr) //Cat!?
- 连接字符串和字符
字符串可以通过加法运算符( + )相加在一起(或称“连接”)创建一个新的字符串
var str1 = "Hello"
var str2 = " World"
print(str1 + str2) //Hello World
例如 var st