关闭

《iOS移动开发从入门到精通》图书连载11:字符和字符串

标签: Swift3Xcode8移动开发iOS图书
504人阅读 评论(0) 收藏 举报
分类:

3.2.4 字符和字符串



字符

Swift中的字符,与Object-C有些不同,每一个字符代表了一个可拓展的字母集,可拓展的字母集由若干个(大于等于一个)Unicode标量值表示,这些标量构成了一个可拓展的字母集,也就是一个人类可读的字符。

1        let characterA:Character ="A"             // "A"
2        let sun = "\u{2600}"                               // "☀"
3        let snow = "\u{2744}"                                     // "❄"

 

您可以将字符拼接为字符串。

1        let sunAndSnow ="\u{2600}\u{2744}"                  //"☀❄"

 

字符拼接后,将以字符串的形式存在,所以下面的代码是错误的:

1        let sunAndSnow: Character ="\u{2600}\u{2744}"        
 

字符串

Swift中的字符串由若干个字符构成,并且和Obejct-C中的字符串不太一样。在Swift语言中,您可以使用两种方式定义一个字符串:

1        var emptyString1 = ""
2        var emptyString2 = String()            

    

 

在第一行代码中,通过给变量设置一个初始值,创建了一个内容为空的字符串。在第二行代码中,则创建了一个String的实例。

使用字符串的isEmpty属性,可以检查一个字符串是否为空字符串:

1        var name = ""
2        name.isEmpty            //true

 

字符串的引入

在Object-C中,您可以使用stringWithFormat方法和%@符号相结合的方式,在一个字符串中引入其它字符串。在Swift中引入其它字符串更加简单,您可以使用\()以引入其它字符串。

1        let 数学= 95
2        let 语文= 90
3        let 成绩= "您的语文成绩是\(数学),语文成绩是\(语文)"
 

除了使用\()引入其它字符串,您还可以使用+号。例如:

1        let firstName = “Jerry”
2        let secondName = “Lee”
3        let FullName = firstName + “ ”+“Lee”                  //结果为:Jerry Lee
 

Swift还提供了几种非常实用的字符串拼接的快捷方法:append()、insert()、和append (),您可以通过下面的实例,认识它们的使用方法和具体功能:

1        var hello = "Hello,swift"
2        let ganTanHao:Character ="!"
3        hello.append(ganTanHao)                                     // Hello,swift!
4        hello.insert(ganTanHao, at:hello.endIndex)         // Hello, swift!!
5        hello.append (" GreatLanguage!")                    // Hello, swift!! Great Language!
 


字符串的中的转义符

字符串的操作非常普遍,您会在字符串中经常发现如\n之类的转义字符,那么Swift包含哪些常见的转义符呢?请查看表3-1-1,包含了一些常用的转义字符和它们的用途:

表3-1-1  调试按钮功能说明

转义符

用途说明

\0

空字符

\\

反斜杠

\ t

制表符

\n

换行符

\r

回车符

\ "

双引号

\ '

单引号

 

转义符在代码中的使用:

1        let message ="Hi\tJerry,\n\"Good morning.\""
以上代码的结果为:
Hi    Jerry,
"Goodmorning."

 


字符串的比较

您在实际的开发工作中,经常需要进行字符串的比较。例如,判断用户输入的登陆密码,是否与数据库保存的注册密码一致。对字符串的比较可以直接使用==符号:

1        let passwordFromUser ="123456"
2        let passwordFromDb ="123456"
3        if(passwordFromUser ==passwordFromDb)
4        {
5            print("您可以登陆系统了。")
6        }

 

如果只需判断字符串的前部分和后部分,是否与另一个字符串相同,您可以使用hasPrefix()方法和hasSuffix()方法,分别用来判断一个字符串的前面或后面,是否包含某个字符串:

1        let userType1 = "京东的金牌商家"
2        let userType2 = "淘宝的金牌买家"
3        print(userType1.hasPrefix("京东"))      //true
4        print(userType2.hasSuffix("买家"))               //true

 


字符串的大小写转换

您可以使用uppercased() 和lowercased()方法,进行英文字符串的大小写转换。

1        let hello = "Hello, swift"
2        print(hello.uppercased())            //HELLO, SWIFT
3        print(hello.lowercased())             //hello, swift
4        print(hello.capitalized)          //Hello, Swift

 

字符串的截取和替换

在实际工作中,您会经常在字符串中查找特定的内容,或者使用另一个字符串,替换源字符串中指定的内容。Swift为字符串提供了很多相关的方法,以方便您的工作:

1        var hello = "Hello, Swift!"
2        hello.substring(from:hello.index(hello.startIndex, offsetBy: 7))               //Swift!
3        hello.substring(to:hello.index(hello.endIndex, offsetBy: -8))          //Hello
4        hello.replacingOccurrences(of:"Hello", with: "Hi")                //Hi, Swift!
5        hello.remove(at:hello.index(hello.startIndex, offsetBy: 5))                //,
6        print(hello)                                                                                           //HelloSwift!

在第2行代码中,使用substring (from:Index, offsetBy)方法,获得从第1个字符开始至指定位置的字符串。其中参数为Index类型。这里使用offsetBy参数,以字符串的startIndex位置右移7位为起点,进行字符串的截取。

在第3行代码中,使用substring(to: Index, offsetBy)方法,从字符串的结束点开始,截取至字符串结束点坐标左移8个字符后的位置。

在第4行代码中,使用replacingOccurrences(of, with)方法,将字符串中的hello字符,替换为Hi。

第5行代码中的remove(at,offsetBy)方法,可以删除字符串指定位置上的字符。

 

遍历字符串中的字符

既然字符串是由一个个的字符相互组合而成的,即字符串是字符的集合。所以您可以对字符串进行遍历,查找和打印字符串中的每个字符。例如在下面的代码中,介绍了如何查找手机号码中某个数字出现的次数:

1        var num = 0
2        let hello ="15011123451"
3        for temp  in hello.characters
4        {
5            if temp == "1"
6            {
7                num += 1
8            }
9        }
10     print(num)                                    //结果为:5







1
0
查看评论

《iOS移动开发从入门到精通》图书连载3:如何创建一个基本的iOS项目?

通过前两篇的学习,我们已经完成了AppleID的注册、加入Apple开发者计划、Xcode软件和模拟器的下载与安装,以及开发配置文件的创建等操作。 现在终于可以创建并运行一个iOS项目了!
  • fzhlee
  • fzhlee
  • 2016-10-06 16:51
  • 1384

《iOS移动开发从入门到精通》图书连载2:如何成为一名iOS开发者

iOS开发人员,和其它传统开发者相比有哪些不同之处? 需要具备怎样的硬件和软件条件?今天我们就来说说这一部分的内容。
  • fzhlee
  • fzhlee
  • 2016-09-17 11:13
  • 1990

《iOS移动开发从入门到精通》图书连载6——Xcode8的使用(下)

在项目中搜索文件       随着项目的深入,工程中的各种组、类文件、资源文件的数量越来越庞大。这时在项目中快速定位目标文件变得越来越困难。Xcode充分认识到这一点,并提供给开发者四个方便、快捷的功能,以辅助开发者快速查找、定位目标文件或...
  • fzhlee
  • fzhlee
  • 2016-12-22 21:08
  • 1732

《iOS移动开发从入门到精通》图书连载4:iOS应用的生命周期

iOS应用的生命周期是指从应用程序的启动,到应用程序结束整个阶段的全过程。 整个iOS应用的生命周期包含了各种状态,有时系统会从应用的一种状态切换至另一种状态来响应系统发生的事件。例如当应用程序崩溃、电话打入、或其它中断应用的事件发生时,当前运行的应用程序会通过切换状态来响应突发。 作为iOS开...
  • fzhlee
  • fzhlee
  • 2016-10-06 17:04
  • 1077

《iOS移动开发从入门到精通》图书连载一:如果你也想开发一款自己的APP,可以看一下这篇文

《iOS移动开发从入门到精通》连载一: iOS移动开发现状 iOS是Apple公司推出的一款操作系统,是用于Apple移动设备的移动操作系统,和Apple的macOS操作系统一样,属于类Unix的商业操作系统 。在2007年1月9日的Macworld大会,Apple公布了这个系统。由于最初是设计给...
  • fzhlee
  • fzhlee
  • 2016-09-06 21:47
  • 2709

《iOS移动开发从入门到精通》图书连载16:字典

3.4.4 字典Swift语言提供两种集合类型来存储数据:数组和字典。数组是一个同类型的序列化列表集合。而字典是一个能够使用类似于键的唯一标识符,来获取值的非序列化集合。字典是一种存储多个相同类型的值的容器。每个值value都关联唯一的键key。键作为字典中的这个值数据的标识符。和数组不同的是,字典...
  • fzhlee
  • fzhlee
  • 2017-01-13 20:11
  • 410

《iOS移动开发从入门到精通》图书连载15:数组

所谓数组,就是将相同数据类型的元素,按一定顺序进行排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分它们的变量集合,这个名字被称为数组名,编号称为数组的下标。
  • fzhlee
  • fzhlee
  • 2017-01-13 19:59
  • 387

《iOS移动开发从入门到精通》图书连载20:枚举

4.2.1 枚举在实际应用中,有的变量只有几种取值的选择。如人的性别只有两种取值(也可能是三种),星期则只有七种可能的取值范围。其它的还有:月份、颜色、学历、职位之类等等。在Swift语言中对这样取值比较特殊的变量,可以定义为枚举类型。所谓枚举是指将变量的值一一列举出来,变量只限于在列举出来的值的范...
  • fzhlee
  • fzhlee
  • 2017-01-22 20:16
  • 670

Oracle 11g从入门到精通pdf

下载地址:网盘下载 目录 编辑 第1章 了解Oracle   1.1 Oracle中的基本概念   1.1.1 数据库   1.1.2 实例   1.1.3 用户与模式   1.2 Oracle安装   1.2.1 Oracle的应用结构   1....
  • cf406061841
  • cf406061841
  • 2017-06-04 23:22
  • 2983

《linux从入门到精通》刘忆智 (我再次说, 这类书,入门是可以的, 精通则完全是忽悠骗人的)

在学校的时候, 几乎没怎么跟linux打过交道, 这不, 工作了, 谁都要摸摸linux啊。            有时候, 买一些书, 可以节省自己很多时间, 我也知道像《linux从入门到精通》这样图文并茂的书, 通常没有什么深度, 但...
  • stpeace
  • stpeace
  • 2015-05-13 23:17
  • 6540
    个人资料
    • 访问:1104713次
    • 积分:13082
    • 等级:
    • 排名:第1227名
    • 原创:206篇
    • 转载:372篇
    • 译文:0篇
    • 评论:89条
    最新评论