文档章节

Swift解读专题四——字符串与字符

珲少
 珲少
发布于 2016/05/10 15:50
字数 952
阅读 122
收藏 3

Swift解读专题四——字符串与字符

一、引言

        Swift中提供了String类型与Characters类型来处理字符串和字符数据,Swift中的String类型除了提供了许多方便开发者使用的方法外,还可以与Foundation框架的NSString类进行转换,使用起来十分方便。

二、String基础

        在Swift中,使用双引号来定义字符串,开发者可以通过如下代码来创建一个字符串常量:

let str = "Hello, playground"

可以通过下面两种方式来创建空字符串:

let str1 = ""
let str2 = String()

调用isEmpty方法可以判断某个字符串是否为空字符串,这个方法将返回一个Bool值,可以直接用于if语句:

if str1.isEmpty {
    print("this String Object is Empty")
}

不像Objective-C有NSString与NSMutableString的区别,在Swift中,如果需要创建可变的字符串,只需用变量来接收:

var str3 = "Hello"
str3 += " "+"World"//str3 = Hello World

String也可以使用插值的方法来构造新的字符串,使用\()的方式来将插值的表达式写在小括号内,示例如下:

let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"//3 times 2.5 is 7.5

获取字符串的长度使用如下代码:

str3.characters.count

Swift中的String可以直接使用==运算符来进行比较,示例如下:

let comStr1 = "one two"
let comStr2 = "one two"
comStr1==comStr2//true

下面示例的代码,用来检验字符串是否包含前缀与后缀:

let tmp3 = "thank you"
tmp3.hasPrefix("thank")//true
tmp3.hasSuffix("you")//true

三、Character的使用

        Character为Swift中的字符类型,在for-in循环中,可以将字符串中所有的字符进行遍历:

for chara in str3.characters {
    print(chara)
}

也可以创建单独的字符类型量值,示例如下:

let char1 = "🐶"
var cgar2 = "HS"

事实上,Sting字符串也可以通过Character字符数组进行初始化:

let chars:[Character] = ["H","e","l","l","o"]
let str4 = String(chars)

向字符串中追加字符使用如下方法:

var str5 = ""
let ca:Character = "a"
str5.append(ca)

四、字符串中的特殊字符

        字符串中的特殊字符主要指转义字符,Swift中的转义字符列举如下:

"\0"//"" 空白符
"\\"//"\"反斜杠符号
"\t"//" "制表符
"\n"//换行符
"\r"//回车符
"\'"//"'"单引号
"\""//"""双引号
"\u{24}"//"$"unicode字符

五、关于字符串下标

        在Swift中,字符串也可以通过下标的方式来访问其中字符,并且提供了相关方法来方便的移动下标,示例代码如下:

let tmp = "Hello Swift"
//获取字符开始的下标值 0
let indexStart = tmp.startIndex
//获取某个下标后一个字符的下标 1
let next = indexStart.successor()
//获取最后一个字符的下标值 注意有\0的存在 
let indexEnd = tmp.endIndex
//获取某个下标前一个字符的下标
let pre = indexEnd.predecessor()
//通过下标获取字符串中的字符 t
var c = tmp[pre]
//进行下标移动 o
var c2 = tmp[indexStart.advancedBy(4)]
//通过遍历下标来遍历字符 H e l l o  S w i f t
for index in tmp.characters.indices {
     print("\(tmp[index]) ", terminator: "")
}

六、在字符串中插入和移除字符

        使用insert函数来向字符串中插入一个字符,示例如下:

var tmp2 = "Hello"
tmp2.insert("!", atIndex: tmp2.endIndex)

注意,上面示例代码中的insert函数只能用于插入一个字符,如果需要插入一组字符,需要使用如下方法:

tmp2.insertContentsOf(" Swift".characters, at: tmp2.endIndex)

使用removeAtIndex函数来移除字符串中的一个字符,示例如下:

tmp2.removeAtIndex(tmp2.endIndex.predecessor())

如果要移除一组字符,主要通过Range来实现,示例如下:

let range = tmp2.endIndex.advancedBy(-4)..<tmp2.endIndex
tmp2.removeRange(range)

专注技术,热爱生活,交流技术,也做朋友。

——珲少 QQ群:203317592

© 著作权归作者所有

共有 人打赏支持
珲少

珲少

粉丝 844
博文 380
码字总数 447278
作品 0
上海
iOS工程师
加载中

评论(1)

阴雨音语
阴雨音语
63
Swift解读专题二——基本类型

Swift解读专题二——基本类型 一、常量和变量 Swift语言的常量和变量在使用之前,必须被定义。常量用于处理程序中只在初始化时设置的量值,之后不能进行赋值改变,变量用于处理程序中可以进行...

珲少
2016/05/08
176
0
Swift讲解专题九——枚举

Swift讲解专题九——枚举 一、引言 在Objective-C语言中,没有实际上是整型数据,Swift中的枚举则更加灵活,开发者可以不为其分配值类型把枚举作为独立的类型来使用,也可以为其分配值,可以...

珲少
2016/05/15
113
0
Swift解读专题三——基础运算符

Swift解读专题三——基础运算符 一、引言 运算符是编程语言不可缺少的一个部分,Swift中除了支持C中的运算符外,还提供了一些更加强大的运算符功能,例如取余符%可以用来计算浮点数,另外新增...

珲少
2016/05/09
247
0
Swift专题讲解二十——扩展

Swift专题讲解二十——扩展 一、简介 Swift中的扩展与Objective-C中的类别功能相似,扩展可以为一个已有的类、结构体、枚举或者协议添加新的属性或方法,与Objective-C的类别不同的是,Swift...

珲少
2016/05/29
99
0
Swift专题讲解十九——类型转换

Swift专题讲解十九——类型转换 一、类型检查与转换 在Objective-C和Java中,任何类型实例都可以通过强转使编译器认为它是另一种类型的实例,这么做其实是将所有的安全检查工作都交给了开发者...

珲少
2016/05/27
58
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 恨不得给你买张飞机挂票

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @开源中国首席灵魂师:分享张希/曹方的单曲《认真地老去》 来不及认真的年轻过,就认真的老去! 《认真地老去》- 张希/曹方 手机党少年们想听...

小小编辑
52分钟前
103
6
如何实现靠谱的分布式锁?

分布式锁,是用来控制分布式系统中互斥访问共享资源的一种手段,从而避免并行导致的结果不可控。基本的实现原理和单进程锁是一致的,通过一个共享标识来确定唯一性,对共享标识进行修改时能够...

郑加威
今天
1
0
Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
4
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部