《iOS移动开发从入门到精通》图书连载11:字符和字符串
来源:互联网 发布:假短信软件 编辑:程序博客网 时间:2024/06/05 02:50
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 数学= 952 let 语文= 903 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("京东")) //true4 print(userType2.hasSuffix("买家")) //true
字符串的大小写转换
您可以使用uppercased() 和lowercased()方法,进行英文字符串的大小写转换。
1 let hello = "Hello, swift"2 print(hello.uppercased()) //HELLO, SWIFT3 print(hello.lowercased()) //hello, swift4 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)) //Hello4 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 = 02 let hello ="15011123451"3 for temp in hello.characters4 {5 if temp == "1"6 {7 num += 18 }9 }10 print(num) //结果为:5
初次写书,难免会有不足和纰漏,欢迎大家通过这个邮箱:coolketang@163.com
将你的意见和建议告诉我们,感谢!
关注我的微信公众号“酷课堂”,获取更多学习资源,欢迎留言交流。
- 《iOS移动开发从入门到精通》图书连载11:字符和字符串
- 《iOS移动开发从入门到精通》图书连载17:函数的定义和调用
- 《iOS移动开发从入门到精通》图书连载18:函数作为参数和返回类型
- 《iOS移动开发从入门到精通》图书连载2:如何成为一名iOS开发者
- 《iOS移动开发从入门到精通》图书连载4:iOS应用的生命周期
- 《iOS移动开发从入门到精通》图书连载7:iOS模拟器的使用
- 《iOS移动开发从入门到精通》图书连载5:Xcode 8的使用(上)
- 《iOS移动开发从入门到精通》图书连载8:Swift的基本概念(上)
- 《iOS移动开发从入门到精通》图书连载9:Swift的基本概念(下)
- 《iOS移动开发从入门到精通》图书连载15:数组
- 《iOS移动开发从入门到精通》图书连载16:字典
- 《iOS移动开发从入门到精通》图书连载19:函数的嵌套
- 《iOS移动开发从入门到精通》图书连载20:枚举
- 《iOS移动开发从入门到精通》图书连载3:如何创建一个基本的iOS项目?
- 《iOS移动开发从入门到精通》图书连载6——Xcode8的使用(下)
- 《iOS移动开发从入门到精通》图书连载13:for循环、while循环语句、repeat-while循环语句
- 《iOS移动开发从入门到精通》图书连载12:元组类型、一元、二元和三元运算符、 比较运算符
- 《iOS移动开发从入门到精通》图书连载14: if条件判断语句、switch条件判断语句、 continue语句和forthrough语句
- 光照和阴影算法该如何优化?
- 控制GPS/WIFI/蓝牙/飞行模式
- 德国:一个中国人在德国生活的真实感受
- 电商开发之商品属性分类
- 图解集合1:ArrayList
- 《iOS移动开发从入门到精通》图书连载11:字符和字符串
- 使用newInstance()来实例化fragment
- 图解集合2:LinkedList
- DPC计时器
- Retrofit2 Cookie管理-按声明决定是否带Cookie请求接口
- java中自定义注解的作用和写法
- Oracle "ORA-00942: 表或视图不存在 "的原因和解决方法
- 由早泄到阳痿,究竟出了什么事?
- Facebook面试题 Remove duplicates from array where all duplicate numbers are located adjacently