前言
在上家公司面试的时候,在跟一个朋友闲聊的时候,想确定一下怎么甄别面试者Swift的水平如何,得到了这个话题。当时作为已经一个使用Swift语言开过项目两年多的我,第一个反应就是String在Swift
里面是String
,在Objective-C
里面是NSString
咯,用法什么的大概都一个熊样子咯。囧~
正文
相同点
在Swift
中,String
保留了大部分的NSString
的API。如:
判断字符串内容是否以某字符串开始
hasPrefix
判断字符串内容谁否以某字符串结尾
hasSuffix
将字符串中的字母转成小写字母
lowercased
将字符串中的字母转成大写字母
capitalized
将字符串分割成数组的
components(separatedBy:)
除了以上这些外,还有一些常规的操作,在Swift
中使用String
和NSString
都是可以的。
不同点
Swift
中String
是值类型,Objective-C
中NSString
是引用类型(值类型在传值的时候通过拷贝出不同的实例来传值,改变一个实例的属性等并不会在其他实例上体现;引用类型在传值的时候通过引用,相当于拷贝了指针,不同变量所指向的同一个实例改变里面的属性个等会影响到所有);String
和NSString
的长度比较方法是不一样的,在String
中的是使用count
来计算长度的,在NSString
中是使用length
来计算长度的;String
和NSString
比较字符串是否相同的方法也是不一样的,在String
中是使用==
来比较的,而在NSString
中却需要isEqualToString
来比较;String
和NSString
比较字符串是否为空的方法更不一样咯,String
可以通过isEmpty
来判断是否为空,NSString
是通过判断是否为null
,然后判断长度的。-
在
NSString
中可以同基本数据类型间进行转化,如:let strA: NSString = "12333" let intOfStr = strA.integerValue let doubleOfStr = strA.doubleValue
在字符串拼接一块,
String
和NSString
也是不一样的,使用String
拼接字符串只需要+
来拼接就行了。