iOS开发Swift-字符串与字符

news/2024/7/20 23:02:39 标签: 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 !

http://www.niftyadmin.cn/n/4966538.html

相关文章

RISC-V中国峰会 | 256核服务器高调亮相,谁与争锋?

8月23日&#xff0c;第三届RISC-V中国峰会&#xff08;RISC-V Summit China 2023&#xff09;在北京香格里拉饭店正式开幕&#xff0c;来自世界各地的行业精英汇聚一堂&#xff0c;为RISC-V生态系统建言献策&#xff0c;凝心聚力&#xff01; 中国工程院院士倪光南、RISC-V国际…

RT-Thread 线程管理(学习一)

RT-Thread是支持多任务的操作系统&#xff0c;多任务通过多线程的方式实现。线程是任务的载体&#xff0c;也是RTT中最基本的调度单位。 线程执行时的运行环境称为上下文&#xff0c;具体来说就是各个变量和数据&#xff0c;包括所有的寄存器变量、堆栈、内存信息等。 特点 …

Spring 事务(事务、声明式事务@Transactional、事务隔离级别、事务传播机制)

目录 1.事务的定义 2.Spring中事务的实现 2.1 MySQL中的事务使用 2.2 Spring中编程事务的实现 2.3 Spring中声明式事务 2.3.1 声明式事务的实现 Transactional 2.3.2 Transactional 作用域 2.3.3 Transactional 参数说明 2.3.4 注意事项 &#xff08;1&#xff09;解…

django自动创建model数据

目前使用的环境&#xff1a;django4.2.3&#xff0c;python3.10 django通过一些第三方库&#xff0c;可以轻易的自动生成一系列的后台数据。 首先先创建一个数据库&#xff1a; 然后&#xff0c;在setting.py中就可以指定我们新创建的数据库了。 DATABASES {default: {ENGI…

mybatis的分页和特殊字符处理

mybatis的分页和特殊字符处理 1. 什么是分页1.2. MyBatis中的分页实现方式1.2.1. 基于参数的分页1.2.2. 使用插件实现分页1.3. 避免SQL注入的技巧1.3.1. 使用预编译语句1.3.2. 参数化查询 二、特殊字符的正确使用方式2.1. 什么是特殊字符2.2. 特殊字符在SQL查询中的作用2.3. 如…

机器学习之Adam(Adaptive Moment Estimation)自适应学习率

Adam&#xff08;Adaptive Moment Estimation&#xff09;是一种常用的优化算法&#xff0c;特别适用于训练神经网络和深度学习模型。它是一种自适应学习率的优化算法&#xff0c;可以根据不同参数的梯度信息来动态调整学习率&#xff0c;以提高训练的效率和稳定性。 Adam算法…

Java网络编程(二)经典案例[粘包拆包]

粘包拆包 概述 TCP是面向流的协议,TCP在网络上传输的数据就是一连串的数据,完全没有分界线。 TCP协议的底层并不了解上层业务的具体定义,它会根据TCP缓冲区的实际情况进行包的划分。 在业务层面认为一个完整的包可能会被TCP拆分成多个小包进行发送,也可能把多个小的包封装成一…

蝴蝶翻转

蝴蝶翻转 实现一 在计算机科学和数字信号处理中&#xff0c;蝴蝶操作是一种常用于快速傅里叶变换&#xff08;FFT&#xff09;的操作。在蝴蝶算法中&#xff0c;输入数据的一部分通过特定的运算结构进行重新排列和组合&#xff0c;以便在计算FFT时实现高效处理。 蝴蝶操作的…