发现不一样5.字符串

1.swift中和oc最大的区别就是swift中NSString是引用类型的而swift是值类型

2.字符串字面量可以包括以下特殊字符:

@1.转义特殊字符\0,\\,\t,\n,\r,\n,\”,\’

@2.单字节,\xnn,nn为两位十六进制数

@3.\unnnn,nnnn为四位十六进制数

@4.\Unnnnnnnn,nnnnnnnn为八位十六进制数

3.初始化空字符串:

var emptyString = “”

var anotherEmptyString = String()

发现和oc创建的方式有点相似

一种是直接赋值,一种是通过初始化方式创建,只不过这种初始化更加简单

4.字符串可变性:

在swift中我们只需要直接通过变量var或者常量声明的方式来决定

是否可变,

对于可变我们也不需要特殊的方法去连接,添加了,我们只需要用+解决

5.使用字符

for character in “Dog!???” 

{

    printLn(character)

}

也可创建单一字符

let yenSign:Character = “¥”

5.计算字符数量

通过调用全局countElements函数,并将字符串作为参数进行传递可以获取该字符串的字符数量

let unusualMenagerie = "Koala ????, Snail ????, Penguin ????, Dromedary ????" 

println("unusualMenagerie has \(countElements(unusualMenagerie)) characters") 

 

 注意:

 

1.不同的 Unicode 字符以及相同 Unicode 字符的不同表示方式可能需要不同数量的内存空间来存储,所以Swift 中的字符在一个字符串中表示并不一定占用相同的内存空间。因此,字符串的长度不得不通过迭代字符串中每一个字符的长度来进行计算。如果您正在处理一个长字 符串,需要注意 countElements 函数必须遍历字符串中的字符,以精准计算字符串的长度。


2.另外需要注意的是通过 countElements 返回的字符数量并不总是与包含相同字符的 NSString 的 length 属性相同。NSString 的 length 属性是基于利用 UTF-16 表示的十六位code units数目,而不是基于 Unicode 字符。为了解决这个问题,NSString 的 length 属性在被 Swift的 String值访问时会被称为utf16count。

6.字符串连接字符

字符串和字符的连接可以通过+直接相加在一起

也可以通过加法赋值运算符(+=)将一个字符串或者字符添加到一个已经存在的字符串变量上

7.字符串插入值

字符串插入值是一种全新的构建字符串的方式,可以在其中包含常量,变量,字面量和表达式。您插入的字符串字面量的每一项都被包裹在以反斜线为前缀的圆括号中:

let multiplier = 3 

let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)” 

注意:您插值字符串中写在括号中的表达式不能包含非转义双引号 (") 和反斜杠 (\),并且不能包含回车或换行符。

8.比较字符串

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

字符串相等:用==比较,如果两个字符串以同一顺序包含完全相同的字符,则认为两者字符串相等:

前后缀相等:通过调用字符串的hasPrefix/hasSuffix方法来检查字符串是否拥有特定的前缀后缀,两个方法均需要以字符串作为参数传入并且返回Boolean值。

9.大小写字符串

您可以通过字符串uppercaseString和lowercaseString属性来访问一个字符串的大写/小写版本

  1. let normal = "Could you help me, please?" 
  2. let shouty = normal.uppercaseString 
  3. // shouty 值为 "COULD YOU HELP ME, PLEASE?" 
  4. let whispered = normal.lowercaseString 
  5. // whispered 值为 "could you help me, please?” 


10.字符编码

  1. for codeUnit in dogString.utf8 { 
  2.     print("\(codeUnit) ") 
  3. print("\n") 
  4. // 68 111 103 33 240 159 144 182  


 

  1. for codeUnit in dogString.utf16 { 
  2.     print("\(codeUnit) ") 
  3. print("\n") 
  4. // 68 111 103 33 55357 56374 


 

 

  1. for scalar in dogString.unicodeScalars { 
  2.     print("\(scalar.value) ") 
  3. print("\n") 
  4. // 68 111 103 33 128054 


 

 

  1. for scalar in dogString.unicodeScalars { 
  2.     println("\(scalar) ") 
  3. // D 
  4. // o 
  5. // g 
  6. // ! 
  7. // ???? 


 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值