。has前綴
。小寫字符串
。組件分離字符串
SubstringWithRange等等
所以開發中很多常規操作使用兩者之壹是可以的。下面說說區別。
NSString是引用類型。SwiftString是壹種值類型。
var nsString:NSString = NSString()
var swiftString:String = String()
var nsString:NSString = "dsx "
var swiftString:String = "dsx "
兩者都可以直接用自己的類名初始化,下面的方法也是初始化。雖然也是這樣寫的,但是NSString的意思是初始化壹個指向這個字符串的指針,而SwiftString的意思是把字符串的文字值賦給壹個變量。
SwiftString字符串之間的拼接比NSString更方便。
NSString需要用append或stringWithFormat連接兩個字符串。
NSString *strA = @ "我的名字";
NSString *strB = @ "是dsx ";
strA =[strA stringByAppendingString:strB];
SwiftString只需要“+”。
var strA = "我的名字"
var strB = " is dsx "
strA = "我的名字"+"是dsx "
strA = strA + strB
println(澳大利亞)
在swift的初期,語法允許字符串和字符之間直接使用“+”拼接,但是在swift1.2之後,就不能這麽做了,字符串和字符只能用append直接連接。
SwiftString可以遍歷字符串。
SwiftString可以遍歷並輸出壹個字符串中的所有字符,這是NSString做不到的,因為前者繼承了CollectionType協議(swift2以後不再繼承這個協議,而是通過壹個characters屬性提供壹個字符集合)。
// swift1.2
對於“我的名字是dsx”中的字符{
println(字符)
}
// swift2.0
對於“我叫dsx”中的角色。字符{
打印(字符)
}
Swift的字符串更像是由多個字符元素組成的序列的乘積,像但不是集合類;如果在上面的“這是壹本書”後添加as NSString,將會報告以下錯誤:
類型“NSString”不符合協議“SequenceType”
swift2.0之後寫成String也會報錯以上。2.0將原來由String繼承的SequenceType和CollectionType協議下沈到String中。CharacterView繼承它們。我感覺蘋果這麽做的目的是為了減少資源浪費。
SwiftString計算字符串長度的方式不同於NSString。
Var strA:String = "mc Dream "
Var strB:NSString = "mc Dream "
print(stra . lengthbytesusingencoding(nsu TF 8 string encoding))//5
print(stra . characters . count))//3
print(strb . length);// 3
NSString可以直接使用字符串。length來獲取字符串的長度,但該字符串只能鍵入。lengthfetsusingencoding(nsu TF 8字符串編碼),所以漢字的存儲空間是英文的三倍。斯威夫特的真實方法類似於。長度是取出字符屬性(數組)然後。數數。
SwiftString比較字符串相等性的方式與NSString不同。
let strA:NSString = " "
let strB:NSString = " "
let strC:NSString = "dsx "
let strD:NSString = "dsx "
if(stra . isequaltostring(strB as String)){
打印(“是”);
}
if (strC == strD){
打印(“是”);
}
NSString有壹個方法isEqualToString來判斷兩個字符串是否完全相等。String沒有這個方法,但是因為String是值類型,所以可以直接用= =來判斷。
NSString可以用基本數據類型進行轉換。
var strA:NSString = "12306 "
var strB:NSString = "0.618 "
var numOfInt = strA.integerValue
var numOfDouble = strB www.hnnedu.comdoubleValue
Swift沒有這個功能,所以在json解析或者字典到模型轉換的時候使用NSString可能更方便。
SwiftString可以通過isEmpty屬性確定字符串是否為空。
var emptyStr = " "
如果emptyStr.isEmpty {
打印(“它是空的”)
}
這也是swiftString獨有的屬性。(董博然)壹般NSString要判斷字符串是否為空,需要看是否。長度>;0。不再使用判斷NSString == nil的方法,會報錯。
二元運算符“==”不能應用於“NSString”和“NilLiteralConvertible”類型的操作數
SwiftString獨特的字符串插入字符功能
var strA:String = "我的名字是dx "
strA.insert("s ",at index:stra . characters . index of(" x ")!);
print(strA) //我的名字是dsx
此方法只能插入單個字符,而不能插入字符串。如果它被寫成“ss”,它將給出無法將類型“string”的值轉換為預期的參數類型“character”的錯誤。
如果妳沒有在董博然博客園看到這篇文章,請點擊查看原文。
NSString是指針,無法執行此操作。而String也有NSString的subStringFromIndex或者ToIndex的功能。