zoukankan      html  css  js  c++  java
  • 强大的swift字符串

      Swift集百家之长,吸收了主流语言java,c,c++等的好的特性,所以它功能十分强大,今天我们就来看看它强大的字符串。

     首先,我们带着这样几个问题去了解、理解swift的字符串。

    1、swift字符串怎么初始化的?

    2、swift字符串长度可变吗?

    3、swift字符串是指针,还是实际的值?

    4、swift有哪些特性?

    下面,我来一一解答这些问题。

    (1) swift 字符串的初始化有2种方式,这两种方式的结果都是一样的。我们来初始化一个空字符串。

      

      

      var str1 = ""    //  第一种方式

      

      var str2 = String()   //     第二种方式

    当初始化一个非空字符串时,可以这样   var str3 = "hello word",这里要说明的是,“”里的值可以是任意符号,数字,文字,字母....

    (2) swift字符串长度是可变的,当然这只针对于用var 定义的字符串,用let定义的字符串常量是不可变的。正因为这个特性,它可以和其他字符,字符串通过符号“ = ”、“ += ”组合成新的字符串。

      

      var str1 = "hello"  

      var str2 = "world"

      var str3:Character = "!"  //这是定义字符的方式

      

      

      var strs1 = str1 + str2     //结果为“hello word”

      

      var strs2 = strs1 + str3  //结果为“hello word!”

    (3)swift字符串 是实际的值,不是指针。当把字符串变量赋值给另一个值,它原来的值不变。当把字符串变量当作参数传递时,它也是一个实际的值。

      

      var str1 = "你好"

      

      var str2 =  str1

    这时,str1的值还是“你好”,由此可见,它不是指针,是一个实际的值。

    (4)swift字符串有哪些特性?它的比较机制,验证机制,遍历机制,转换机制,组合机制,都是它的特性。

        a、比较机制。字符串之间的比较是可以分多样的。

               它比较完全相等时,用“==”来连接;

             它比较前缀相等时,给定一个字符串前缀,然后用要比的字符串,调用hasPrefix方法,参数为给定的前缀;

             它比较后缀相等时,给定一个字符串后缀,然后用要比的字符串,调用hasSuffix方法,参数为给定的后缀。

          举个例子,我们学校在开兴趣班,要统计各个兴趣班的人数有多少?用这个就可以很容易的找出来。

          let students =["ios,谢明,s3sj101","android,胡军,s3jn95","ios,都美君,s3jn95","技术支持,高小龙,s3jn92","数据库,阿斯,s3jn92","数据库,封剑,s3j101"]

      

          要统计出 各个兴趣班的人数,只需这样做:

          var ios = 0  //定义ios班的人数

          var android = 0   //定义android班的人数

          var technical = 0  //定义技术支持班的人数

          var database = 0  // 定义数据库班的人数

           for student in students  {

            

            if student.hasPrefix("ios") {

                 ios++

            }

            if student.hasPrefix("android") {

               android++

            }

            if student.hasPrefix("技术支持") {

               technica++

            }

            if student.hasPrefix("数据库") {

               database++

            }

         }

          

    print(“报ios班的人数(ios)”)

    print(“报android班的人数(android)”)

    print(“报技术支持班的人数(technica)”)

    print(“报数据库班的人数(database)”)

    如果我们要统计各个原班有多少人,可以这样做:

          let students =["ios,谢明,s3sj101","android,胡军,s3jn95","ios,都美君,s3jn95","技术支持,高小龙,s3jn92","数据库,阿斯,s3jn92","数据库,封剑,s3j101"]

      

         

          var s3sj95 = 0  //定义s3sj95班的人数

          var s3jn92 = 0   //定义s3jn92班的人数

          var s3j101 = 0  //定义s3j101班的人数

      

           for student in students  {

            

            if student.hasSuffix("s3sj95") {

                 s3sj95++

            }

            if student.hasSuffix("s3jn92") {

               s3jn92++

            }

            if student.hasSuffix("s3j101") {

               s3j101++

            }

         }

          

    print(“s3sj95班的人数(s3sj95)”)

    print(“s3jn92班的人数(s3jn92)”)

    print(“s3j101班的人数(s3j101)”)

      b:验证机制。判断一个字符串是不是为空,我们可以用isEmpty属性获取

        var  str = " "

         if str.isEmpty {

           print("str是空字符串")

         }else{

          print("str是非空字符串")

        }

        执行结果为:str是空字符串

      c:遍历机制。我们知道,字符串是有字符组成,swift可以遍历字符串中的每个字符。

      

        var str = "helloWord"

        for char in sre {

          print("(char)")

        }

      

      执行结果会把每个字符遍历出来。

      d:转换机制。它还支持字符串的大小写转换。通过uppercaseString和lowercaseString属性可以做到,我们来看看:

      var  str = "helloWord"

      

      var  upper = " "  // 定义一个存放转化为大写后的变量

      var lower = " "   //// 定义一个存放转化为小写后的变量

      

      upper = str.uppercaseString

      lower = str.lowercaseString

      

      然后分别输出就行了 ,很简单吧。。。

      

      

      e:组合机制.组合机制是它很大的一个亮点,它的长度是可变的,因此也是可以组合的。这给我们的开发带来很大的遍历,是我们开发者的福音哦。

      

      这里就不举例了,他们之间可以通过“+”、“+=”、也可以通过一个合法的表达式生成新的字符串。最后,它还可以计算字符串的总长度,

      需要用到的方法是:countElements。参数为要计算的字符串本身。

      

     好了,今天的分享就到这。希望可以帮到刚刚学习ios或者想要学ios的朋友们,我也是新手,有不足和不对的地方求大神指正。让我们一同进步!大家可以关注我的微博http://www.cnblogs.com/lb0129/

  • 相关阅读:
    字符串加密和解密的常类
    vs2013中使用nuget下载cefsharp winform包
    序列积第m小元素 二分答案优化
    贪心 park
    struct结构体 重载运算符
    最小生成树kruskal 知识点讲解+模板
    c++快读与快输模板
    MZOJ #82 总统竞选
    MZOJ #83 位运算
    MZOJ #81 最小得分和
  • 原文地址:https://www.cnblogs.com/lb0129/p/4890121.html
Copyright © 2011-2022 走看看