Swift 5从零到精通iOS开发训练营
上QQ阅读APP看书,第一时间看更新

3.3 字符串类型中的常用方法

Swift语言的String类型中封装了许多实用的属性和方法,例如字符串的检查,字符的追加、插入、删除操作,字符数的统计等。熟练使用这些属性与方法能够使得开发者在编程中处理数据时游刃有余。

前面介绍过,字符串变量的值为空字符串与字符串变量的值为空是两个不同的概念,String类型的实例通过使用isEmpty方法来判断字符串的值是否为空字符串,示例如下:

     //判断字符串是否为空
     var obj1 = ""
     if obj1.isEmpty {
        print("字符串为空字符串")
     }

还有一种方式也可以用来判断一个字符串变量是否为空字符串,即当字符串变量中的字符数为0时,也可以认定此字符串为空字符串,即通过字符串的count属性判断其中的字符个数是否为0,示例如下:

     //获取字符串中的字符个数,判断是否为空字符串
     if obj1.count == 0 {
        print("字符串为空字符串")
     }

String类型的实例除了可以使用“+”直接拼接外,还可以使用比较运算符,示例代码如下:

在比较两个字符串的大小时,会逐个对字符的大小进行比较,直至遇到不相等的字符为止。上面的示例代码可以这样理解:先比较com1字符串与com2字符串的第1个字符,若相等,再比较第2个字符,以此类推。由于com2的第4个字符(2)大于com1的第4个字符(1),因此com2字符串大于com1字符串。

开发者可以通过下标的方式来访问字符串中的每一个字符,获取字符串起始下标与结束下标的方法如下:

     var string = "Hello-Swift"
     //获取字符串的起始下标String.index类型
     var startIndex = string.startIndex
     //获取字符串的结束下标 String.index类型
     var endIndex = string.endIndex

这里需要注意,startIndex和endIndex获取到的值为Index类型,并不是整数类型,它们不能直接进行加减运算,需要使用相应的方法进行下标的移动操作,示例如下:

     //获取某个下标后一个下标对应的字符 char="e"
     var char = string[string.index(after: startIndex)]
     //获取某个下标前一个下标对应的字符 char2 = "t"
     var char2 = string[string.index(before: string.endIndex)]

上面的代码中,index(after:)方法用来获取当前下标的后一位下标,index(before:)方法用来获取当前下标的前一位下标。也可以通过传入下标范围的方式来截取字符串中的某个子串,示例如下:

     //通过范围获取字符串中的一个子串 Hello
     var subString = string[startIndex...string.index(startIndex, offsetBy: 4)]
     var subString2 = string[string.index(endIndex, offsetBy: -5)..<endIndex]

上面的示例代码中,“…”为范围运算符,在后面的章节中会详细介绍,offsetBy参数传入的是下标移动的位数,若向其中传入正数,则下标向后移动相应位数,若向其中传入负数,下标向前移动相应位数。使用这种方式来截取字符串十分方便。String类型中还封装了一些方法,可以帮助开发者便捷地对字符串进行追加、插入、替换、删除等操作,示例如下:

下面的方法可以方便地完成字符串的大小写转换:

     var string2 = "My name is Jaki"
     //全部转换为大写
     string2 = string2.uppercased() //结果为"MY NAME IS JAKI"
     //全部转换为小写
     string2 = string2.lowercased() //结果为"my name is jaki"

下面的方法可以用来检查字符串的前缀和后缀:

     //检查字符串是否有My前缀
     string2.hasPrefix("My")
     //检查字符串是否有jaki后缀
     string2.hasSuffix("jaki")

温馨提示:本章介绍了许多String类型中封装的方法,熟练运用这些方法可以极大地提高开发者的编程效率,本章后面会为读者准备丰富的练习题,尽可能多地实践练习是掌握一门编程语言语法的不二法门。