swift-字符串02-字符串的插值,连接,长度

import UIKit


class ViewController: UIViewController {

  

  override func viewDidLoad() {

    super.viewDidLoad()

    

    //MARK: 字符串的长度

    /*

    为了获取一个字符串中的字符数量,我们可以用String.characters.count

    不同的Unicode字符以及相同Unicode字符的不同表示方式可能需要不同数量的内存空间来存储,

    因为在Swift中的字符在一个字符串中表示并不一定占用相同的内存空间。

    因此,字符串的长度不得不通过迭代字符串中每一个字符的长度来进行计算。

    */

    

    let string1 ="最美的不是下雨天,是曾与你躲过雨的屋檐"

    let string2 ="Because of you ,I never stay too far from sidewalk"

    

    print("string1 has\(CFStringGetLength(string1))")

    print("string2 has\(string2.characters.count)")

    

    //MARK: 连接字符串

    /**

    字符串值可以通过加法运算符(+)相加(或者说链接)在一起并创建一个新的字符串值

    运算符-是不可以的哦

    let string6 = string3 - "o"

    print(string6)

    Character不能通过加法运算符来做处理

    */

    let string3 = "hello"

    let string4 = " jay"

    let string5 = string3 + string4

    print(string5)

    

    //MARK: 字符串插值

    /**

    字符串插值是一种全新的构建字符串的方式,可以在其中包含常量、变量、字面量和表达式

    插入字符串字面量的每一项需要包裹在以反斜线为前缀的圆括号中.

    

    所写的插值字符串在括号中的表达式里面不能包含非转义双引号  (") 和反斜杠  (\)

    并且不能包含回车或换行符

    */

    let a = 4

    let b = "\(a) * 3 ==\((a) *3)"

    print(b)

    

    //MARK: 字符串的比较

    /**

    Swift 提供了三种方式来比较字符串的值:字符串相等,前缀相等和后缀相等。

    通过调用字符串的hasPrefix/hasSuffix方法来检查字符串是否包含特定的前缀/后缀。

    这两个方法均需要以字符串作为入参并返回 Boolean值。

    这两个方法都采用逐个字符匹配的方式来比较基本字符串是否包含字符前缀或者后缀。

    */

    let equalString1 = "let it go"

    let equalString2 = "let it go"

    if equalString1 == equalString2 {

      

      print("yes, it is equal")

      

    } else {

      

      print("no,it is not equal")

      

    }

    

    let itgo = [

      "let it go",

      "let me go",

      "let you go",

      "I like",

      "it like",

      "you like"

    ]

    

    for whoGo in itgo {

      

      if (whoGo.hasPrefix("let ")) {

        

        print("\(whoGo) == has prefix of let ")

        

      }

      if (whoGo.hasSuffix(" like")) {

        print("\(whoGo) == has suffix of like")

        

      }

      

    }

    //字符串的大小写

    //你可以通过字符串的uppercaseStringlowercaseString 属性来访问一个字符串的大写或小写的版本

    

    let string1 = "May I help you ?"

    let upString1 = string1.uppercaseString

    print(upString1) //MAY I HELP YOU ?

    

    let lowString1 = string1.lowercaseString

    print(lowString1) // may i help you ?

    

    /**

    Unicode 是文本编码和表示的国际标准

    它使你可以采用标准的格式表示来自任意语言几乎所有的字符

    并能够对文本文件或网页这样的外部资源中的字符进行读写操作

    

    Swift的字符串和字符类型是完全兼容Unicode

    它支持如下所述的一系列不同的Unicode编码。

    

    Unicode中每一个字符都可以被表示成一个或多个unicode标量

    一个unicode标量是字符或者修饰符的唯一21位数(和名称)

    

    Unicode字符串被写进文本文件或其他的存储结构时

    这些 unicode 标量将会按照Unicode 定义的集中格式之一进行编码。

    每个格式将字符串编码为小的代码块-code units

    其包括 UTF-8 格式( 8 位代码单元进行编码) UTF-16 格式( 16 位代码单元进行编码)

    

    

    你可以通过遍历字符串的utf8属性来访问它的  UTF-8 表示。

    其为UTF8View类型的属性, UTF8View是无符号 8 (UInt8) 值的集合,

    每一个UIn8都是一个字符的UTF-8表示:

    let dog = "dog"

    for code in dog.utf8 {

    

    print(code)

    

    }

    // 100 111 103 33

    在上面的例子中,前四个 10 进制 codeUnit (100, 111, 103, 33) 代表了字符  d o g   !

    他们的  UTF-8 表示与其 ASCII  表示相同。

    

    

    可以通过遍历字符串的  utf16 属性来访问它的  UTF-16 表示

    其为  UTF16View  类型的属性,

    UTF16View 是无符号 16   (UInt16) 值的集合,

    每一个  UInt16  都是一个字符的 UTF-16 表示

 

    */

    

    let dog = "dog!"

    for code in dog.utf8 {

      

      print(code)

      

    }

    /**

    100

    111

    103

    33

    */

    for code in dog.utf16 {

      

      print(code)

    }

    /**

    100

    111

    103

    33

    */

    

  }


    

  }

  

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值