空字符串
var emptyString = “”
var anotherEmptyString = String()
if emptyString.isEmpty {…} //isEmpty 方法可用,返回Bool值
至于
var myString = “hello”
myString += “ world”
let myString = “hello”
myString += “ world”
就不须要重复的提了吧。另外一种let 不可行,由于他是常量
字符串作为參数的传递
值得注意的是,字符串是传值的,而在Objective-C中。是传引用的
尽管官方说在编译选项里能够把这个优化掉,仅仅有在须要改变字符串内容的时候才会传值,从而获得非常高效的传參
(算了,后面看看还有没有什么能够规避这个问题的方法吧,尽量少传字符串为妙。除非不得已)
字符
for character in “Hello World” {
pintln (character)
}
let myChar: Character = “$”
不解释了
字符个数
Swift提供了一个全局函数 countElements 能够用于干这事儿:
let myLongString = “Hello Kitty~ Hello World~ I Love Shanghai~ I Love China~ “
println(“myLongString has \(countElement(myLongString) characters”) //57个...
值得注意的是:
countElement() 是把字符一个一个数过去的,所以处理长字符串的时候。须要我们关心效率问题
这与NSString不同,NSString是按着UTF-16存储字符串的,也是按着UTF-16去算字符数的
而Swift存的是unicode,它并不能像UTF-16那样数,由于它也不知道每一个字符占了多大空间
所以,countElement() 和 NSString 返回的字符数,有可能是不同的
当然,假设把Swift的String 传给了NSString的函数的话,这里就要注意了,是要按着NSString的方式数
也就是utf16count。而不是countElement()的返回数量
字符串包括
hasPrefix 和 hasSuffix 两个String的方法都是遍例字符串的:
let myString1 = “中华人民共和国”
let myString2 = “我是中国人”
myString1.hasPrefix(“我”) // false
myString2.hasPrefix(“我”) // true
myString1.hasSuffix(“人民”) // true
myString2.hasSuffix(“人民”) // false
字符串大写和小写转换
uppercaseString 和 lowercaseString
let myString = “Hellow World”
println(myString.uppercaseString) //HELLOW WORLD
println(myString.lowercaseString) //hellow world
字符编码
Swift的字符串是unicode的。 unicode能够表示世界上不论什么一种语言的不论什么字符
须要转换的时候。也能够使用String提供的方法
let myString = “abc”
myString.utf8 //UTF-8 编码
myString.uft16 //UTF-16 编码
myString.unicodeScalars //21位 unicode
关于编码的知识。我就不写在这里了,须要了解的话
请參考《The Swift Programming Language》第92-96页 (发现这个页码在不同设备上不一样,我是在iMac上看的)