加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

玩转swift字符串——Advanced

发布时间:2020-12-14 01:54:20 所属栏目:百科 来源:网络整理
导读:最近在尝试学一些iOSswift开发,要做一个“四则运算计算器”,其中涉及到很多字符串运算,终于在不断查阅文档和stackoverflow的情况下完成。感慨道,swift的开发手册太过于简单呐,完全不够用,很多东西还得自己摸索,但其中唯一不变的真理就是:“请在 play

最近在尝试学一些iOSswift开发,要做一个“四则运算计算器”,其中涉及到很多字符串运算,终于在不断查阅文档和stackoverflow的情况下完成。感慨道,swift的开发手册太过于简单呐,完全不够用,很多东西还得自己摸索,但其中唯一不变的真理就是:“请在playground里面好好玩耍吧!!!”

在这里,我把我搜集到的知识与大家分享一下

String 和 Character

字符串声明

  1. var str = "Hello,playground"
  2. let str2 = String()

判断是否为空

  1. str.isEmpty

字符串长度

  1. countElements(str)
  2. //如果是NSString,那么长度就是
  3. var str3:NSString = str
  4. str3.length

字符串的遍历

    for eachChar in str{
  1. println eachChar
  2. }
  3. //这时有人会问,那么我想从后往前遍历呢?!
  4. in reverse){
  5. println eachChar
  6. }

字符串拼接

  1. //拼接字符串型
  2. str += " Hello"
  3. //拼接非字符串型
  4. var chCharacter = "!"
  5. str.append(ch)
  6. //或者
  7. str "(ch)"

字符串的插值

    //String Interpolation
  1. let imIntInt = 2
  2. let imDoubleDouble 3.14
  3. let imBoolBool = true
  4. let imStringString "hello"
  5. let imTuple = (2,4)
  6. let imOptionnalInt? nil
  7. let imCharacter"!"
  8. println("(imInt)n(imDouble)n(imBool)n(imString)n(imTuple)n(imOptionnal)n(imCharacter)")

String基础操作

字符串比较

    //String Comparison
  1. let str_a "abc"
  2. let str_b "abc"
  3. str_a == str_b //true
  4. let str_c "abd"
  5. < str_c //因为 d 要比 c 靠后,所以 true
  6. let str_d "abcd"
  7. str_c > str_d //虽然 str_c 有三个,str_d 有四个,但是 d 比 c 要靠后, 所以 true
  8. str_b < str_d //前三位相同,但是str_d 有第四位,所以 true

前缀/后缀 我在这里就不说了,每个文档都会讲

导入Foundation使用更多字符串功能

使用 Foundation,其实每个”.swift”文件都已经默认导入 Foundation 了,所以不需要我们再在头部导入

    //default import Foundation
  1. str.capitalizedString //大写首字母
  2. str.uppercaseString //全部转大写
  3. .lowercaseString //全部转小写

字符串修剪

    var str5 " !hi!!! "
  1. //清除空格
  2. str5.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
  3. //清除特定字符 如“!”
  4. str5(charactersInString:" !"))

字符串分割

    var str6 "welcome to play swift"
  1. //以空格作为分割依据
  2. str6.componentsSeparatedByString" ")
  3. var str7 "welcome to play swift!Step-by-step learn from now"
  4. //以特定字符作为分割依据 如:" ","!","-"三个
  5. str7.componentsSeparatedByCharactersInSet: " !-"字符串链接

      var str8 "-"
    1. str8.join(["2""3""4""5"]) //输出:2-3-4-5

    String、Int、Float、Double 互相转换

      //String to Int
    1. "4"
    2. str.toInt()
    3. //String to Float
    4. var str1 "3.14"
    5. //下面的方法 return 3.14000010490417 ,个人建议最好还是使用下面的方法转换成double比较好
    6. NSString(string: str1).floatValue
    7. //String to Double
    8. var str2 "1.3333"
    9. : str2).doubleValue //return 1.3333
    10. //Int to String
    11. var num 234
    12. (num//float to String
    13. var num1 = 3.14
    14. (format"%f" num1) //return "3.140000"
    15. "%.2f"//return "3.14"

    Something else

    如果你对 3.140000 这种形式的数字感到恶心的话,那么你就对了因为我也是这样,试想:

      var result 3.125 + 4.875 //return 8.0,It's good!
    1. //但是你如果使用String(format:)进行转换
    2. result//return 8.00000 It's bad!
    3. //所以你不如直接使用“字符串插值”的方法
    4. (result)”

    String.Index 和 Range

    在swift语言中,你会发现很多函数参数中要求 String.Index 类型,那下面我们就用实例来说明什么是 String.Index 类型范围

    1. str7 "Welcome to play swift!step by step learn from now"
    2. .rangeOfString"step"//return 22..<26
    3. //从后往前搜索,需要第二个参数
    4. optionsNSStringCompareOptions.BackwardsSearch//return 30..<34
    5. //我们同样可以设置第二个参数,表示匹配串忽略大小写限制“原字符串中是 Welcome,我们搜索 welcome”
    6. "welcome": CaseInsensitiveSearch//return 0..<7
    String.Index 是什么?
    1. str7 "Welcome to play swift!step by step learn from now"
    2. str7.startIndex //0
    3. str7.endIndex //49
    4. //range between 0..<49
    5. let strRange Range<Index>(start:str7.startIndex end.endIndex)
    6. //注意这里,startIndex 和 endIndex 是 String.Index 类型的,不是 Int 类型!!
    7. let startIndexIndex = str7//0
    8. let endIndex= advance(str7 10//10
    9. //这里定义了一个 Range 类型,由 start 和 end 两个参数构成
    10. let searchRange :startIndex:endIndex)
    11. //在定义的范围“searchRange”内进行搜索操作
    12. range: searchRange)

    截取子串

      var toIndex //从字符串开头开始到即第4个字符
    1. str7.substringToIndex(toIndex// Welc
    2. var fromIndex 14)
    3. //从字符串某个位置开始向后 14 位
    4. .substringFromIndex(fromIndex// y swift!step by step le...
    5. //在字符串 4 位置开始,到 14 位置结束
    6. .substringWithRange:toIndex:fromIndex)) //ome to pla

    获取字符串最后一个字符

      //方法一
    1. .predecessor())
    2. //方法二-较繁琐
    3. var lastChar countElements) - 1)
    4. var lastChar (lastChar)

    字符串插入

      var insertIndex 22//在第 22 字符的后面插入
    1. str7.insert"!" atIndex: insertIndex字符串删除

      1. str7.removeAtIndex(insertIndex.removeRange:insertIndex字符串替换

          var replaceEndIndex 13.stringByReplacingCharactersInRange:replaceEndIndex), withString"Step-by-step")

        (编辑:李大同)

        【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读