2019独角兽企业重金招聘Python工程师标准>>>

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

转载于:https://my.oschina.net/u/2340880/blog/672875

Swift解读专题四——字符串与字符相关推荐

  1. Swift语言指南(十)--字符串与字符

    原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String ...

  2. Swift中文教程(三) 字符串和字符

    一个字符串String就是一个字符序列,像"hello,world","albatross"这样的.Swift中的字符串是用String关键词来定义的,同时它也 ...

  3. Swift学习:字符串和字符(Strings and Characters)

    字符串是例如 "hello,world", "albatross" 这样的有序的 Character (字符)类型的值的集合.通过 String 类型来表示.一 ...

  4. Swift傻傻分不清楚系列(五) 字符串和字符

    本页包含内容: 字符串字面量 初始化空字符串 字符串可变性 字符串是值类型 使用字符 连接字符串和字符 字符串插值 Unicode 计算字符数量 访问和修改字符串 比较字符串 字符串的 Unicode ...

  5. swift和java_Swift和Java关于字符串和字符的比较

    1. 字符串字面量 Swift和Java关于字符串操作大同小异. Swift:字符串字面量(String Literals):我们可以在代码中包含一段预定义的字符串值作为字符串字面量. 字符串字面量是 ...

  6. 「MacOS」Swift 第三章:字符串和字符

    3 字符串和字符 字符串和字符分别使用 String 类和 Character 类表示,字符串是一系列字符的集合. 字符串之间的拼接使用+号完成:也可向可变字符串中插入常量.变量.字面量,这一过程称为 ...

  7. 芒果iOS开发之Swift教程05-Swift字符串和字符

    [主要内容] 1. 字符串字面量 2. 初始化空字符串 3. 字符串可变性4. 字符串是值类型 5. 使用字符 6. 连接字符串和字符 7. 字符串差值 8. Unicode 9. 计算字符数量 10 ...

  8. Tsukinai的第四十九个程序(在字符串每个字符间插入一个空格)

    Tsukinai的第四十九个程序 用字符数组作函数参数编程实现在字符串每个字符间插入一个空格的功能. **输入提示信息:"Input a string:" **输入格式要求:&qu ...

  9. 索骥馆-编程语言之《程序语言的奥妙:算法解读(四色全彩)》扫描版[PDF]

    内容简介: 在我们生活的世界中,各种各样形形色色的事物和现象,其中都必定包含着科学的成分.在这些成分中,有些是你所熟知的,有些是你未知的,有些是你还一知半解的.面对未知的世界,好奇的你是不是有很多疑惑 ...

最新文章

  1. 推荐 查公司信息的一个网站
  2. 苏勇老师写的CCIE详解
  3. pytroch 数据增量 transforms的二十二个方法
  4. 2.5.1 MySQL数据库备份恢复基础讲解
  5. java 正则匹配括号是否成对_十分钟学会正则表达式
  6. ASP.NET是如何在IIS下工作的
  7. 2021百强县市名单
  8. markDown零碎整理
  9. PCL Examples
  10. Rust : rust-bindgen中ffi中类型转换
  11. 图像压缩相关内容简介
  12. 泛函分析 04.06 有界线性算子 - 习题课
  13. Base64的编码以及解码
  14. 5G工业无线网关在物联网的应用优势
  15. AutoRun类型分析
  16. NFT新玩法丨一文了解将NFT所有权分割成ERC20代币的Fractional协议
  17. 观察 :人工智能与伦理道德
  18. BottomNavigationView简单使用,增加小红点,增加中间操作按钮
  19. 摩斯电码php源码,PHP实现基于文本的摩斯电码生成器
  20. 多开技术的出现发挥了什么作用?

热门文章

  1. ECMAScript 5 —— 单体内置对象之Math对象
  2. bzoj1251: 序列终结者 (splay)
  3. .net内存管理与指针
  4. pthred()多线程计算派
  5. 【Oracle Database】数据库用户管理
  6. 第二十天:规划风险应对
  7. (原)使用mkl计算特征值和特征向量
  8. Mozilla开源了VR框架A-Frame
  9. [转]优秀编程的“艺术”
  10. android常见错误与问题