Swift学习之十:字符串与字符(Strings and Characters)

字符串是有序的字符集,如"hello, world" 或者 "albaatross".在Swift中字符串类型是String,由有序的Character组合而成。

Swift中的String与Character类型提供了快速,与Unicode兼容的方式在代码中操作文本。String字符串的创建与操作的语法

是轻量的,可阅读的,与C语言中的字符串语法类似。字符串的连接可以使用+操作符直接相连,字符串可变性是通过选择

常量或者变量,就像Swift中的其它任何类型一样。

  1. // 字符串是由""括起来的  
  2. let someString = "Some string literal value"  


字符串中可以包含特殊字符,如:
  1. let wiseWords = "\"Imagintion is more important than knowledge\" - Einstein"  
  2. let dollarSign = "\x24"   
  3. let balckHeart = "\u2665"  
  4. let sparkingHeart = "\U0001F496"  

初始化空串:
  1. // 下面这两个都是是空串,这两个是相等的  
  2. var emptyString = ""  
  3. var anotherEmptyString = String()  

判断空串:
  1. if emptyString.isEmpty {  
  2.   println("Nothing to see here")  
  3. }  


字符串可变性:

把字符串赋值给一个变量,就可以修改,赋值给一个常量,就不能修改。

  1. var variableString = "Horse"  
  2. variableString += " and carriage" // variableString is now "Horse and carriage"  
  3.   
  4. let constantString = "Highlander"  
  5. constantString += "and another Highlander" // compile error  


Strings是值类型而不是引用类型。

当创建一个新的字符串时,String值是copy的。

也就是说在传参数给函数或者方法,或者赋值给某个常量或者变量时,是copy一份。


字符串中的字符:Character类型

使用for-in循环:

// D

// o

// g

// !

// 这里没有显示指明类型,如果也可以显示指定:for character: Character in "Dog!"

  1. for character in "Dog!" {  
  2.    println(character)  
  3. }  

Swift提供了一个全局的计算元素个数的函数:countElements
  1. let msg = "I am a boy, and I love Swift."  
  2. println("msg has \(countElements(msg) characters)")  

NOTE

不同的Unicode字符和相同的Unicode字符的不同呈现会需要不同的内存来存储。正因为这样,在Swift中并不是字符串中每个

Character都占用相同的内存,因此计算字符串的长度时,需要遍历完整个字符串才能计算出来。


连接字符串和字符(使用+)

  1. let str1 = "hello"  
  2. let str2 = " mimi"  
  3. let character1: Character = "!"  
  4. let character2: Character = "?"  
  5.   
  6. let stringPlusCharacter = str1 + character1 // equals "hello!"  
  7. let stringPlusString = str1 + str2// equals "hello mimi"  
  8. let characterPlusString = character1 + str1 // equals "!hello"  
  9. let characterPlusCharacter = character1 + character2 // equals "!?"  

使用 += 给已经存在的字符串追加字符串
  1. var instroduction = "look over"  
  2. let str = ",I am here"  
  3. instroduction += str // 结果是instroduction变成了"look over,I am here"  


NOTE

不能把字符串或者字符追加到字符(Character)中,因为字符只能包含单一字符.


字符串插入(String Interpolation)

  1. let multiplier = 3  
  2. // 通过\(变量或者常量名)可以插入字符串  
  3. // 结果是:3 times 2.5 is 7.5  
  4. let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"  

字符串比较:字符串相等、字符串前缀相关、字符串后缀相等

字符串相等是在两个字符串包含完全相同的字符且相同的顺序才是相等的。

如:

  1. var quotaton = "We're a lot alike, you and I."  
  2. var sameQuotation = "We're a lot alike,you and I."  
  3. if quotaton == sameQuotation {  
  4.    println("They are equal strings")  
  5. }  


前缀相等比较:

如:

  1. let str = "I am your lover"  
  2. let anotherStr = "I am your lover two"  
  3.   
  4. if anotherStr.hasPrefix(str) {  
  5.   println("\(anotherStr) has prefix \(str)")  
  6. }  

后缀相等比较

如:

  1. let str = "I am your lover"  
  2. let anotherStr = "really? I am your lover"  
  3.   
  4. if anotherStr.hasSuffix(str) {  
  5.   println("\(anotherStr) has suffix \(str)")  
  6. }  

字符串大小写转换(uppercase and lowercase strings)

如:

  1. let normal = "Could you help me, please?"  
  2. let shouty = normal.uppercaseString  
  3. println(shouty)  
  4.   
  5. let whispered = normal.lowercaseString  
  6. println(whispered) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值