详解Swift中的Characters字符类型与String字符串类型

 更新时间:2016年06月23日 18:23:23   作者:珲少  
Swift中的字符串操作相当便捷,下面我们来详解Swift中的Characters字符类型与String字符串类型,需要的朋友可以参考下

一、引言

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)

相关文章

  • Swift利用Decodable解析JSON的一个小问题详解

    Swift利用Decodable解析JSON的一个小问题详解

    这篇文章主要给大家介绍了关于Swift利用Decodable解析JSON的一个小问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • Swift中 !和 ?的区别及使用

    Swift中 !和 ?的区别及使用

    这篇文章主要介绍了Swift中 !和 ?的区别及使用的相关资料,需要的朋友可以参考下
    2016-12-12
  • 详解Swift 中的幻象类型

    详解Swift 中的幻象类型

    让我们来看看一种技术,它可以让我们利用 Swift 的类型系统在编译时执行更多种类的数据验证消除更多潜在的歧义来源,并帮助我们在整个代码库中保持类型安全,通过使用幻象类型(phantom types),对Swift 幻象类型相关知识感兴趣的朋友一起看看吧
    2022-05-05
  • Swift 列举内存管理与异常处理具体代码

    Swift 列举内存管理与异常处理具体代码

    内存管理和异常处理在任何编程语言中都是核心概念。尽管有很多教程解释了Swift自动引用计数的基本原理,但我发现没有一个可以从编译器的角度对其进行解释。在本文中,我们将通过详细代码列举学习Swift内存管理与异常处理
    2021-11-11
  • Swift图像处理之优化照片

    Swift图像处理之优化照片

    Core Image能通过分析图片的各个属性,人脸的区域等进行自动优化图片。我们只需要调用autoAdjustmentFiltersWithOptions这个API方法获取各个自动增强滤镜来优化图片即可。不管是人物照片还是风景照均可增强效果
    2015-11-11
  • 探讨Swift数组和字典

    探讨Swift数组和字典

    Swift数组是具体的。他不同于Objective-C的的NSArray和NSMutableArray里的类,它可以存储任何类型的对象,不提供有关它们返回的对象的性质的任何信息
    2015-12-12
  • Swift利用CoreData如何存储多种数据类的通讯录

    Swift利用CoreData如何存储多种数据类的通讯录

    这篇文章主要给大家介绍了关于Swift利用CoreData如何存储多种数据类的通讯录的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
    2017-12-12
  • Swift 编程语言入门教程

    Swift 编程语言入门教程

    今天在网上看到一篇非常好的Swift 编程语言入门教程,分享给大家
    2014-08-08
  • Swift自动调整视图布局AutoLayout和AutoresizingMask功能详解

    Swift自动调整视图布局AutoLayout和AutoresizingMask功能详解

    这篇文章主要为大家介绍了Swift自动调整视图布局AutoLayout和AutoresizingMask功能及使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Swift利用AFN实现封装网络请求详解

    Swift利用AFN实现封装网络请求详解

    网络请求工具是我们经常用到的工具类,所以下面这篇文章主要给大家介绍了关于Swift利用AFN如何实现封装网络请求的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-10-10

最新评论