iOS开发Swift-字符串与字符

1.字符串的定义

复制代码
let someString = "some string value"

2.多行字符串的定义(""")

复制代码
let quotation = """
有一个人前来买瓜。
"这瓜甜吗?"他问。
"""

前一个"""前和后一个"""后无换行

复制代码
//前一个"""前和后一个"""后无换行
let someString = "有个人。"
let someString = """
有个人。
"""
//此两个语句效果相同

想要实现在代码编写时换行而在实际运行后不换行: \

复制代码
//在代码编写时换行而在实际运行后不换行
let someString = """
abcdefg\
hijklmn
"""
//实际输出:abcdefghijklmn

3.字符串中的特殊字符

(1)转义字符

|------|-------|
| \0 | 空字符 |
| \\ | 反斜线 |
| \t | 水平制表符 |
| \n | 换行符 |
| \r | 回车符 |
| \" | 双引号 |
| \' | 单引号 |

要在"""中使用(""")时,必须至少写一个转义符\。例如 \""" 或 \"\"\"

(2)Unicode标量

|-------------|------------|
| \u{24} | 两位十六进制数 |
| \u{2665} | 四位十六进制数 |
| \u{nnn...} | 1~8位十六进制数 |

4.扩展字符分隔符

有\但不想转义时:

复制代码
#"Line1 \nLine2"#

5.初始化空字符串

复制代码
var emptyString = ""     //或
var emptyString = String()

//判断字符串是否为空:
if emptyString.isEmpty {
    print("Empty!")
}

6.字符串可变性

复制代码
var a = "a"
a += "b"   //a = "ab"
let c = "c"
c += "d"   //报错,常量字符串不可修改

7.使用字符

复制代码
//通过for-in输出字符
for c in "Dog!"{
    print(c)
}
/* 输出:
    D
    o
    g
    !
*/

//通过指定类型创建字符
let end: Character = "!"

//通过定义字符数组创建字符数组,再通过String(字符数组)方法创建字符串
let cat: [Character] = ["c", "a", "t"]
let catString = String(cat)
print(cat)   //输出cat

8.连接字符串和字符

复制代码
//1
let a = "a"
let b = "b"
var c = a + b
//2
var a = "a"
a += b
//3
let a: Character = "a"
b.append(a)    //ba

9.字符串插值

复制代码
let a = 3
let message = "\(a) times 2.5 is \(Double(a) * 2,5)"   //3 times 2.5 is 7.5

10.字符串索引

复制代码
let greeting = "Guten Tag!"
greeting[greeting.startIndex]    //G
greeting[greeting.index( before: greeting.endIndex)]    //!
greeting[greeting.index( after: greeting.startIndex)]    //u
greeting[greeting.index( greeting.startIndex, offsetBy: 7)]    //a

startIndex为第一个字符;endIndex为最后一个字符后一个字符。

indices属性会创建一个包含全部索引范围访问单字符。

复制代码
for index in getting.indices{
    print("\(greeting[index])", terminator:" ")
}    //G u t e n  T a g !

11.插入和删除

复制代码
//插入
var h = "Hello"
h.insert("!", at: h.endIndex)     //Hello!

//删除
//remove
h.remove( at: h.index(before: h.endIndex) )    //Hello
//removeSubrange
let range = h.startIndex ..< h.endIndex
h.removeSubrange(range)   //参数为一个字符串范围
//运行结果:啥也没有

12.子字符串

复制代码
let g = "Hello,World!"
let index = g.firstIndex(of: ",") ?? g.endIndex
let beginning = g[..<index]     //beginning为subString类型
let newString = String(beginning)   //将subString类型转换为String类型
//短时间使用此子字符串用subString,长期使用需转换为String类型
print(newString)    //Hello

13.比较字符串

(1)字符串/字符相等

== !=

标准相等:语言意义和外观都相等。

|-----------------------------|-----|
| a == a | 自反性 |
| a == b ⇒ b == a | 对称性 |
| a == b && b == c ⇒ a == c | 传递性 |

(2)前缀/后缀相等

复制代码
//都返回一个布尔值
scene.hasPrefix("Action 1")    //有相同前缀"Action 1"
scene.hasSuffix("。")     //有相同后缀"。"

14.utf8表示、utf16表示

复制代码
dogString.utf8    //68 111 103 226
dogString.utf16    //68 111 103 8252

15.Unicode标量表示

Unicode:字符的唯一21位数表示

复制代码
dogString.unicodeScalars     //D o g !
相关推荐
roman_日积跬步-终至千里5 分钟前
【Go语言基础【20】】Go的包与工程
开发语言·后端·golang
秦少游在淮海26 分钟前
C++ - string 的使用 #auto #范围for #访问及遍历操作 #容量操作 #修改操作 #其他操作 #非成员函数
开发语言·c++·stl·string·范围for·auto·string 的使用
liucan23330 分钟前
JS执行速度似乎并不比Swift或者C语言慢
前端·ios
const54434 分钟前
cpp自学 day2(—>运算符)
开发语言·c++
心扬35 分钟前
python生成器
开发语言·python
阿蒙Amon41 分钟前
06. C#入门系列【自定义类型】:从青铜到王者的进阶之路
开发语言·c#
虾球xz1 小时前
CppCon 2015 学习:CLANG/C2 for Windows
开发语言·c++·windows·学习
CodeWithMe1 小时前
【C/C++】namespace + macro混用场景
c语言·开发语言·c++
蓝婷儿2 小时前
6个月Python学习计划 Day 17 - 继承、多态与魔术方法
开发语言·python·学习
Mikhail_G2 小时前
Python应用变量与数据类型
大数据·运维·开发语言·python·数据分析