每天学一点Swift----字符和字符串

来源:互联网 发布:淘宝客如何获取pid 编辑:程序博客网 时间:2024/05/21 00:48

 .字符类型

  1. Swift中使用Character类型表示单个字符,用String类型表示字符串。  

  2. Swift使用了Unicode字符集来存储字符,因此Swift的字符、字符集几乎可以存储世界上语言的任意字符。

  3. 字符必须用双引号包起来。——java中是不同的

   4. 定义字符有3种表示形式

      1). 直接通过单个字符来指定字符常量,例如 “A” “7”;

      2). 通过转义字符来表示特殊的字符常量,例如“\n” “\t”;

      3). 使用“\u{n}”的形式,其中n代表一个18位的十六进制数。

      

   5. Swift中常用的转义字符如下:

      \b ---- \u{8}      \n ---- \u{a}         \r ---- \u{d}       \t ---- \u{9}      

\" ---- \u{22}      \' ---- \u{27}      \\ ---- \u{5c}

      

    6.关于字符集的知识:

       计算机底层无法存储字符,计算机需要存储字符时,实际上存储的是该字符集对应的编号:当计算机要保存某个字符时只要将该字符的编号转换为二进制码,然后保存起来即可。所谓字符集,就是所有字符的编号组成的总和。早起美国人给英文字符、数字、标点符号等字符进行了编号,他们认为所有的字符顶多100多个,只要一个字节(8位,即256字符编号)即可为所有的字符编号----这就是ASCII码字符集。后来,亚洲国家纷纷为本国文字进行编号----定制本国的字符集,但是这些字符集并不兼容。于是美国人又为世界上所有的书面语言的字符进行了统一编号,这次他们用了两个字节(16位,支持65536个字符编号),这就是Unicode字符集。后来Unicode又产生了多个变种:utf-8utf-16utf-32等。因此,无论什么字符,它在计算机底层的存储形式其实就是一个编号。

       

  .字符串类型

  1. 字符串就是多个字符的组合,将多个字符放在双引号中即可形成字符串。----不像Object-C中的字符串,需要在前面添加@符号)  

  2. 字符串的本质其实就是一个结构体,因此也可以调用结构体的构造器来创建字符串。举个栗子:

     var str2 = String(); //调用构造器来创建一个空的字符串

     var str3 = String(count:5, repeatedValue : Character("f"));  //创建具有5个重复字符的字符串

   3.Java中一样,Swift也是使用 +符号将多个字符串连接成一个字符串。

   4. SwiftStringFoundation框架的NSString类可以进行无缝桥接,只要程序需要NSString的地方都可以直接传入String作为替换。----使用NSString时必须在第一行使用import Foundation来导入Foundation框架。但是需要注意的是:SwiftStringFoundation框架中的NSString又非常大的差异----Foundation框架中的     NSString是一个类,因此它是一种引用类型(指针类型),程序使用NSString*的形式来声明字符串变量。在程序中创建NSString对象,并将它传给一个函数或方法,或者赋值给一个变量时,程序实际上传递的是该NSString对象的引用(指针),程序并不会复制NSString对象的副本。但SwiftString是一个结构体,因此它是一种值类型,程序使用String但形式来声明字符串变量,当程序创建了一个String实例,并将它传给一个函数或方法,或者赋值给另一个变量时,传递的是该String实例的副本。----即,NSString是址传递, SwiftString是值传递。

  .字符串的可变性

  1. Object-C中,字符串类有两个:NSStringNSMutableString,其中,NSString表示不可变字符串,NSMutableString表示可变字符串。

  2. Swift中,对字符串只提供来一种String类型,通过变量和常量来区分字符串是否可变。  

  .字符串的基本操作

  1. Swift提供了一个countElements()函数来计算String变量或常量中的字符串。

  2. 由于Unicode字符的不同表示方式所需要的存储空间并不相同,因此Swift字符串中每个字符所占的内存空间不相同,所以推荐使用countElements()函数来获取字符串中包含的字符数。

 3. countElements()函数返回的字符数量与NSStringlength属性的返回值并并相同:NSStringlength属性是基于UTF-16字符集进行计算的,而不是真正基于Unicode字符进行计算的。为来解决这个问题,SwiftString提供了utf16count属性,该属性的返回值与NSStringlength属性的返回值总是相等。

  4. Swift提供了for-in循环来打印字符串中字符----类比与java中的for-each,举个栗子:

  for s in str

  {

    print(s)

  }

  

  .字符串比较

  1. Swift提供le3种方式来比较字符串的值:字符串相等、前缀相等、后缀相等。  

  2. 如果两个字符串包含的字符及其序列完全相同,Swift认为两个字符串相等,判断字符串相等用 ==运算符进行判断。  

  3. Swift提供来hasPrefix函数和hasSuffix函数来判断字符串是否有前缀和后缀,如果有则返回true,否则为false,举个栗子:

  var str = “ABcdef.com”

  str.hasPrefix("AB")  //return true

  str.hasPrefix("ab")  // return false

  str.hasSuffix("com")  // return true

 

 .获取字符串中字符的Unicode编码

  1. 使用for-in遍历字符串时如果需要访问String底层存储的Unicode值,则需要借助于String提供的如下3个属性:

  1utf8:返回该字符在底层的utf-8编码集合,该属性返回一个UTF8View类型的值,UTF8View是一个包含多个UInt8值的集合

  2utf16:返回该字符在底层的utf-16编码集合,该属性返回一个UTF16View类型的值,UTF16View是一个包含多个UInt16值的集合  

  3unicodeScalars:返回该字符串底层的Unicode标量集合,该属性返回一个UnicodeScalarView类型的值,UnicodeScalarView是一个包含多个UnicodeScalar值的集合。每个UnicodeScalar都代表一个21位的United编码,每个UnicodeScalar都拥有一个  value属性,可返回对应的数值,该数值的类型是UInt32


上一篇:每天学一点Swift----可选类型

下一篇: 每天学一点Swift----运算符与表达式(一)

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在微信上买东西退货不退钱怎么办 手机分期付款不还款被起诉了怎么办 朋友用我的花呗分期不还钱怎么办 朋友用我身份证办分期不还钱怎么办 我手机号被别人绑定信用卡了怎么办 5s用不了4g网络怎么办 红米手机返回键没了怎么办 小米手机进水了开不了机怎么办 手机返回键和菜单键失灵怎么办 苹果5s指纹按键坏了怎么办 小米手机安卓系统耗电量大怎么办? 苹果5s充不进去电怎么办 苹果手机6s返回键失灵怎么办 本人被骗同时被利用骗了别人怎么办 京东取消订单后货到了该怎么办 京东电信日租卡流量顶置了怎么办 苹果6s进水后闪光灯不亮怎么办 华为手机情景义停车事项过期怎么办 拼多多付款后商品下架了怎么办 淘宝上买化妆品买到假货了怎么办 找苹果官网解id发票丢了怎么办 客人已交订金但要取消宴席怎么办 京东买的小米电视碎屏了怎么办 京东购买的电视碎屏了怎么办 淘宝上买手机不能用不给退怎么办 天猫申请退货退款卖家不处理怎么办 在淘宝买到货到付款的假苹果怎么办 跟朋友买手机买到假货怎么办 在淘宝网上买到不合格的产品怎么办 淘宝打假师打了我的店铺怎么办 收藏品公司关门跑路员工怎么办 客户快递签收后说货物短缺怎么办 京东商城买东西商家不换货怎么办 在商场买东西过几天就降价了怎么办 天猫买东西不退货不退款怎么办 买买8p美版的怎么办 京东金条银行卡被冻结还不了怎么办 在瑞士刚买的浪琴手表不走了怎么办 刚买的手表表镜有划痕 怎么办 唯品会上买的手表有质量问题怎么办 我买的对方材料没开票给我怎么办