4 字符串 Swift and Object-C
字符串由多個字符組成,使用 “” 引起的內容
swift語言中提供了兩種字符串:可變字符串和不可變字符串
可變字符串:字符串的內容可以修改,字符串的長度可以修改,用var修飾
不可變字符串: 字符串的內容和長度都不能修改,用let修飾
Swift 和 Obiect-C之間的轉換
用as 轉換 [當前類型 as 想轉換的類型]
var str: NSString = “I Love Object - C”
let str0 = str as String
創建空字符串
let str1: String = “”
let str1: String = String()
Object - C
var mutable = NSMutableString.init(capacity:0)// 可變字符串
創建賦初值的字符串
let str2 = “你好啊” //不可變字符串(常量字符串)
var str3 = String (“中國”) //可變字符串
Object -C
var str:NSString = NSString.init(format:”%@,%d”,“中國”,75)
//不可變字符串
var mutable = NSMutableString.init(capacity:0)
// 可變字符串
不可變字符串轉化為可變字符串
let str2 = NSMutableString.init(string: “不可變字符串”)
判斷字符串是否為空
if str2.isEmpcase print(“空值”)
}
獲取字符串中字符個數
str3.characters.count
遍歷字符串
【Swift】
for i in str3.characters{
print(i)
}
【Object-C】
for i in 0..<str3.length{
NSLog(“%C”,str3.characterAtIndex(i))
}
獲取字符串中的指定字符
swift中獲取字符串的索引/下標,類型是Index類型,不是Int類型
【1】獲取字符串中的第一個字符
.startIndex
【2】獲取字符串中最后一個字符
.endIndex.predecessor
【3】獲取后一位字符
.successor
【4】獲取前一位字符
.predecessor
【5】獲取指定位置上的字符
.advanceBy()
添加字符/字符串
【1】追加字符
.append(Character)
例如:
var char: Character = “!”
str3.append(char)
【2】追加字符串
.appendContentOf()
+
Object-C
.appendString(追加的字符串)
例如:
str3.appendString(“I Love Swift”)
.appendFormat(“占位符”,追加的內容)
例如:
str3.appendFormat(“%@”,“I Love Swift”)
插入字符串內容
【1】插入字符
.insert(要添加的字符, atIndex:要添加的索引下標位置(index類型))
【2】插入字符串
.insertContentsOf(要添加的字符串,at:索引下標位置)
Object -C
.insertString(要添加的內容,atIndex: 索引)
刪除字符串內容
【1】刪除指定位置的字符
.removeAtIndex()
【2】刪除一定范圍的字符
.removeRange(下標區間)
例如:
str3.removeRange(str3.startIndex…str3.startIndex.advancedBy(5))
【3】刪除所有字符
.removeAll
Object-C
.deleteCharactersInRange(NSRange.init(location: 索引值,length:長度))
//從指定位置刪除指定個數的字符
修改
.replaceRange(區間范圍, with: 要修改的字符串)
.replaceCharacterInRange(NSRange.init(location: 索引值,length:長度),withString:”新的字符”)
//修改指定索引的元素
修改出現在指定位置的多個字符串
.replaceOccurrencesOfString(“指定字符串”,withString:“想要修改成的字符串”, options:NSStringCompareOptions.AnchoredSearch,range: NSRange.init(location:起始位置,length:長度))
字符串的比較
Swift:區分大小寫:
== != <= >=
比較的是字符的ASCII碼值 a:97 A:65
例如:
let string1 = “hello”
let string2 = Hello”
if string1 == string2{
print(“相等”)
}
if string1 <= string2{
print(“左邊的小於右邊的”)
}
if string1 >= string2{
print(“左邊的大於右邊的 ”)
}
if string1 != string2{
print(“兩個字符串不相等”)
}
Object-C 不區分大小寫的方法:
if string1.compare(string2 ,options:NSStringCompareOption.CaseInsensitiveSearch) == NSComparisonResult.OrderSame{
print(“兩個字符串相等”)
}
字符和數字之間的相互轉換
【1】字符轉數字
let ch = “A”
var value = ch.unicodeScalars.first!.value
Object-C
let numStr = NSString = “123”
let intNum = numStr.intValue
【2】數字轉字符
let n = 1
var unicodes = UnicodeScalar.init(n)
let ch_tmp = Character.init(unicodes)
Object-C
let str =NSString.init(format:”%d”,100)
let str = NSString.init(format:輸入格式,要轉換的數字)
【3】字符轉字符串
let n : Character = “i”
let m = String.init(format: %C,,i)
獲取字符串的前后綴
【1】前綴 .hasPrefix()
let path = “www.baidu.com”
print(path.hasPrefix(“www”))
【2】后綴 .hasSuffix()
print(path.hasSuffix(“com”))
字符串查找
查找子串在父串中出現的范圍,范圍是NSRange類型
NSRange是結構體,有兩個屬性:一個是location 代表的是字符串的位置
一個是length 代表字符串的長度
let str:NSString = “helloworld”
【從前向后查找】:
.rangeOfString(要查找的子串)
例如:
let range1 = str.rangeOfString(“hello”)
【從后向前查找】:
.rangeOfString(要查找的子串,options:NSStringCompareOptions.BackwardSearch)
例如:
let range2 = str.rangOfString(“hello”,options : NSStringCompareOptions.BackwardSearch)
輸出格式為:
if range1.location != NSNotFount{
print(“找到了\(range.location)\(range.length)”)
}
else{
print(“沒有找到‘)
}
大小寫的轉換
小寫轉大寫 .uppercaseString
大寫轉小寫 .lowercaseSrting
字符串的提取
.substringToIndex //從索引為0的位置開始,提取到指定的索引的前一位為止
.substringFromIndex //從索引處開始,提取到整個字符串結束
.substringWithRange(NSRange.init(location: 索引值,length:要提取的長度))
例如:
var superStr :NSString = “Welcome to Beijing”
let sub1 = superStr.substringToIndex(4) //Welc
let sub2 = superStr.substringFromIndex(3) //come to Beijing
let sub3 = super.substringWithRange(NSRange.init(location:0, length: 5))
// Welco
從文件中讀取內容
try! NSString.init(contentsOfFile:文件地址, encoding: NSUFT8StringEncoding)
例如:
var path: String = “/Users/zhyunfe/Desktop/zhyunfe/千鋒/10.1可選鏈/字符串/豬之歌.txt”
let contents = try! NSString.init(contentsOfFile: path, encoding:NSUFT8StringEncoding)