前言
在上家公司面試的時候,在跟一個朋友閑聊的時候陶缺,想確定一下怎么甄別面試者Swift的水平如何,得到了這個話題。當(dāng)時作為已經(jīng)一個使用Swift語言開過項目兩年多的我夯到,第一個反應(yīng)就是String在Swift
里面是String
,在Objective-C
里面是NSString
咯,用法什么的大概都一個熊樣子咯饮亏。囧~
正文
相同點
在Swift
中耍贾,String
保留了大部分的NSString
的API阅爽。如:
判斷字符串內(nèi)容是否以某字符串開始
hasPrefix
判斷字符串內(nèi)容誰否以某字符串結(jié)尾
hasSuffix
將字符串中的字母轉(zhuǎn)成小寫字母
lowercased
將字符串中的字母轉(zhuǎn)成大寫字母
capitalized
將字符串分割成數(shù)組的
components(separatedBy:)
除了以上這些外,還有一些常規(guī)的操作荐开,在Swift
中使用String
和NSString
都是可以的付翁。
不同點
Swift
中String
是值類型,Objective-C
中NSString
是引用類型(值類型在傳值的時候通過拷貝出不同的實例來傳值晃听,改變一個實例的屬性等并不會在其他實例上體現(xiàn)百侧;引用類型在傳值的時候通過引用,相當(dāng)于拷貝了指針能扒,不同變量所指向的同一個實例改變里面的屬性個等會影響到所有)佣渴;String
和NSString
的長度比較方法是不一樣的,在String
中的是使用count
來計算長度的初斑,在NSString
中是使用length
來計算長度的辛润;String
和NSString
比較字符串是否相同的方法也是不一樣的,在String
中是使用==
來比較的见秤,而在NSString
中卻需要isEqualToString
來比較砂竖;String
和NSString
比較字符串是否為空的方法更不一樣咯,String
可以通過isEmpty
來判斷是否為空秦叛,NSString
是通過判斷是否為null
,然后判斷長度的晦溪。-
在
NSString
中可以同基本數(shù)據(jù)類型間進(jìn)行轉(zhuǎn)化,如:let strA: NSString = "12333" let intOfStr = strA.integerValue let doubleOfStr = strA.doubleValue
在字符串拼接一塊挣跋,
String
和NSString
也是不一樣的三圆,使用String
拼接字符串只需要+
來拼接就行了。