Swift学习笔记(6)——字符串和字符(二)
来源:互联网 发布:如何分享淘宝购物车 编辑:程序博客网 时间:2024/05/18 10:01
1. 访问和修改字符串
(一)字符串索引
(1)String.Index,它对应着字符串中的每一个Character的位置。
(2)startIndex属性:获取一个String的第一个Character的索引。
endIndex属性:获取最后一个Character的后一个位置的索引。
所以,endIndex属性不能作为一个字符串的有效下标。如果String是空串,startIndex和endIndex是相等的。
(3)index(before:) 或 index(after:) 方法,可以立即得到前面或后面的一个索引。
index(_:offsetBy:) 方法来获取对应偏移量的索引。
let greeting = "Guten Tag!"greeting[greeting.startIndex]// Ggreeting[greeting.index(before: greeting.endIndex)]// !greeting[greeting.index(after: greeting.startIndex)]// ulet index = greeting.index(greeting.startIndex, offsetBy: 7)greeting[index]// a
(4)使用 characters 属性的 indices 属性会创建一个包含全部索引的范围(Range),用来在一个字符串中访问单个字符。
for index in greeting.characters.indices { print("\(greeting[index]) ", terminator: "")}// 打印输出 "G u t e n T a g ! "
注:
startIndex 和 endIndex 属性或者 index(before:) 、index(after:) 和 index(_:offsetBy:) 方法也可以使用在 Array、Dictionary 和 Set中。
(二)插入和删除
(1)insert(_:at:) 方法:在一个字符串的指定索引插入一个字符。
insert(contentsOf:at:) 方法:在一个字符串的指定索引插入一个段字符串。
var welcome = "hello"welcome.insert("!", at: welcome.endIndex)// welcome 变量现在等于 "hello!"welcome.insert(contentsOf:" there".characters, at: welcome.index(before: welcome.endIndex))// welcome 变量现在等于 "hello there!"// 要插入的字符串为" there",在welcome字符串的最后一位(最后一位的后一位的前一位,即最后一位)前插入。
(2)remove(at:) 方法:在一个字符串的指定索引删除一个字符。
removeSubrange(_:) 方法:在一个字符串的指定索引删除一个子字符串。
welcome.remove(at: welcome.index(before: welcome.endIndex))// welcome 现在等于 "hello there"// 删掉最后一位“!”let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndexwelcome.removeSubrange(range)// welcome 现在等于 "hello"// 删掉从字符串最后的后一位开始数,到其前六位,即“ there”
注:
上面所写的属性与方法也可以使用在 Array、Dictionary 和 Set 中。
2. 比较字符串
Swift 提供了三种方式来比较文本值:字符串字符相等、前缀相等和后缀相等。
(一)字符串/字符相等
(1)字符串/字符可以用等于操作符(==)和不等于操作符(!=)
(2)如果两个字符串(或者两个字符)的可扩展的字形群集是标准相等的,那就认为它们是相等的。即使可扩展的字形群集是有不同的 Unicode 标量构成的,只要它们有同样的语言意义和外观,就认为它们标准相等。但是,如果他们的语言意义不一样,就不相等。例如,英语中的LATIN CAPITAL LETTER A(U+0041,或者A)不等于俄语中的CYRILLIC CAPITAL LETTER A(U+0410,或者A)。
(二)前缀/后缀相等
调用字符串的hasPrefix(:)/hasSuffix(:)方法来检查字符串是否拥有特定前缀/后缀,两个方法均接收一个String类型的参数,并返回一个布尔值。
- Swift学习笔记(6)——字符串和字符(二)
- 字符和字符串—Swift学习笔记(六)
- Swift学习笔记(5)——字符串和字符(一)
- Swift学习笔记系列——(2)字符串和字符
- The Swift Programming Language学习笔记(四)——字符串和字符
- 【Swift】学习笔记(三)——字符和字符串
- Swift学习笔记(三)之字符串和字符
- swift学习笔记-字符串和字符(Strings and Characters)
- Swift--字符串和字符(二)
- swift基础(二):字符串和字符
- Swift学习笔记(十四)——字符,常量字符串与变量字符串
- Swift学习笔记之字符串(二)
- Swift入门(二)——字符与字符串
- Swift和Objective-C的API交互—Swift学习笔记(二十)
- swift笔记 (三) —— 字符和字符串
- Swift 字符串和字符(笔记)
- swift学习之路(五)字符串和字符
- Swift学习笔记(二)
- JS中变量类型及运算的一些知识点总结
- 需要学习的知识点
- poj3009之深度优先搜索 dfs解法
- dorado5 之一eclipse配置dorado5插件
- Oracle之一键获取数据库总体情况 awr等报表
- Swift学习笔记(6)——字符串和字符(二)
- JavaShowAlgorithm-二分查找BinarySearch算法
- 大话设计模式--java实现策略模式
- nested exception is org.apache.ibatis.builder.BuilderException Error invoking SqlProvider method
- fastrtext︱R语言使用facebook的fasttext快速文本分类算法
- yii2composer安装相关问题
- 完美解决:darknet yolo v2 Couldn't find open file:data/coco.names
- eclipse 欲仙欲死的quickstart.jar 和catalog
- Windows10虚拟机上的spark环境搭建