Swift字符串常用方法

字符串索引 (String Indices)

  • 每一個(gè)String值都有一個(gè)關(guān)聯(lián)的索引(index)類型,String.Index耐量,它對(duì)應(yīng)著字符串中的每一個(gè)Character的位置盒延。

  • 不同的字符可能會(huì)占用不同數(shù)量的內(nèi)存空間缩擂,所以要知道Character的確定位置,就必須從String開頭遍歷每一個(gè) Unicode 標(biāo)量直到結(jié)尾添寺。因此胯盯,Swift 的字符串不能用整數(shù)(integer)做索引。

  • 使用startIndex屬性可以獲取一個(gè)String的第一個(gè)Character的索引计露。使用endIndex屬性可以獲取最后一個(gè)Character的后一個(gè)位置的索引博脑。因此,endIndex屬性不能作為一個(gè)字符串的有效下標(biāo)票罐。如果String是空串叉趣,startIndex和endIndex是相等的。

  • 通過調(diào)用String.Index的predecessor()方法胶坠,可以立即得到前面一個(gè)索引君账,調(diào)用successor()方法可以立即得到后面一個(gè)索引。任何一個(gè)String的索引都可以通過鎖鏈作用的這些方法來獲取另一個(gè)索引沈善,也可以調(diào)用advancedBy(_:)方法來獲取乡数。但如果嘗試獲取出界的字符串索引,就會(huì)拋出一個(gè)運(yùn)行時(shí)錯(cuò)誤闻牡。

1.獲取字符串中指定索引處的字符

let str = "sunke"
//Swift 1.2 //chr:Character="n"
let chr = advance(str.startIndex,2)

//Swift 2.0 //chr:Character="n"
let chr = str.startIndex.advancedBy(2)

2.計(jì)算字符串長(zhǎng)度length

let str = "@小碼哥"
let len1 = count(str) //swift 1.2 //=4
let len2 = str.characters.count //swift 2.0 //=4
let blen = str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding) //=10

3.字符串比較

let str1 = "hello,"
let str2 = "sk."
let str3 = "hello,sk."
let comp1 = str1==str2 //false
let comp2 = str1+str2 == str3 //true
let comp3 = str1 < str2 //true
let comp4 = str1 != str2 //true

4.是否包含子字符串contains

let str1 = "hello,sk."
let str2 = "sk"
let range = str1.rangeOfString(str2)
if range != nil{
    print("包含")
}

5.查找子字符串indexof

var str = "hi,sunke."
let range = str.rangeOfString("sunke") //Swift 2.0
let startIndex = range?.startIndex //=3

6.首字母大寫capitalized

var str1 = "sunke is a coder."
str1.capitalizedString
//str1 = "Sunke Is A Coder."

7.轉(zhuǎn)換為大寫字母uppercase

var str1 = "hello, sunke."
str1 = str1.uppercaseString
//str1 = "HELLO, SUNKE."

8.轉(zhuǎn)換為小寫字母lowercase

var str1 = "HELLO, SUNKE."
str1 = str1.lowercaseString
//str1 = "hello, sunke."

9.截取字符串substring

let str1 = "hello,sunke."
let str2 = str1.substringFromIndex(advance(str1.startIndex, 6)) //Swift 1.2
let str2 = str1.substringFromIndex(str1.startIndex.advancedBy(6)) //Swift 2.0
//str2 = "sunke."
//----------------------------------------
let str3 = str1.substringToIndex(advance(str1.startIndex, 5)) //Swift 1.2
let str3 = str1.substringToIndex(str1.startIndex.advancedBy(5)) //Swift 2.0
//str3 = "hello"
//----------------------------------------
let range = Range(start: advance(str1.startIndex, 6), end: advance(str1.endIndex, -1)) //Swift 1.2
let range = Range(start: str1.startIndex.advancedBy(6), end: str1.endIndex.advancedBy(-1)) //Swift 2.0
let str4 = str1.substringWithRange(range)
//str4 = "sunke"

10.字符串首尾修剪

//去掉首尾空格和換行符
let str1 = " sunke.\n "
let str2 = str1.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
//str2 = "sunke."
//----------------------------------------
//去掉首尾空格
let str3 = str1.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
//str3 = "sunke.\n"
//----------------------------------------
//去掉首尾空格和\n
let charset = NSCharacterSet(charactersInString:" \n")
let str4 = str1.stringByTrimmingCharactersInSet(charset)
//str4="sunke."

11.字符串和數(shù)組轉(zhuǎn)換

var str1 = "boy, girl, man, woman"
let str1Array = str1.componentsSeparatedByString(",")
//str1Array = ["boy", " girl", " man", " woman"]

var str2 = "boy,girl,man 10 20 30"
let charset = NSCharacterSet(charactersInString:", ")
let str2Array = str2.componentsSeparatedByCharactersInSet(charset)
//str2Array = ["boy", "girl", "man", "10", "20", "30"]

12.字符串替換replace

var str1 = "My name is Sunke."
let subRange = Range(start: str1.startIndex, end: advance(str1.startIndex, 2)) //Swift 1.2
let subRange = Range(start: str1.startIndex, end: str1.startIndex.advancedBy(2)) //Swift 2.0
str1.replaceRange(subRange, with: "Your")
//str1 = "Your name is Sunke."

var str2 = "hello, Sunke."
str2 = str2.stringByReplacingOccurrencesOfString("Sunke", withString: "iOS")
//str2 = "hello, iOS."

//CaseInsensitiveSearch :不區(qū)分大小寫的搜索
str2 = str2.stringByReplacingOccurrencesOfString("iOS", withString: "Sunke", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)
//str2="hello, Sunke."

13.string轉(zhuǎn)換為Int/Long/Float/Double/Bool等

var str1 = "100"
var i = str1.toInt()! //Swift 1.2 //=100
var i = (str1 as NSString).integerValue //Swift 2.0 //=100
var a = (str1 as NSString).intValue //=100
var l = (str1 as NSString).longLongValue //=100
var str2 = "10.8"
var f = (str2 as NSString).floatValue //=10.8
var d = (str2 as NSString).doubleValue //=10.8
var str3 = "true"
var b = (str3 as NSString).boolValue //=true
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末净赴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子罩润,更是在濱河造成了極大的恐慌玖翅,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異金度,居然都是意外死亡应媚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門猜极,熙熙樓的掌柜王于貴愁眉苦臉地迎上來中姜,“玉大人,你說我怎么就攤上這事跟伏《撸” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵受扳,是天一觀的道長(zhǎng)携龟。 經(jīng)常有香客問我,道長(zhǎng)勘高,這世上最難降的妖魔是什么峡蟋? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮相满,結(jié)果婚禮上层亿,老公的妹妹穿的比我還像新娘。我一直安慰自己立美,他們只是感情好匿又,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著建蹄,像睡著了一般碌更。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洞慎,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天痛单,我揣著相機(jī)與錄音,去河邊找鬼劲腿。 笑死旭绒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的焦人。 我是一名探鬼主播挥吵,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼花椭!你這毒婦竟也來了忽匈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤矿辽,失蹤者是張志新(化名)和其女友劉穎丹允,沒想到半個(gè)月后郭厌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雕蔽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年折柠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萎羔。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡液走,死狀恐怖碳默,靈堂內(nèi)的尸體忽然破棺而出贾陷,到底是詐尸還是另有隱情,我是刑警寧澤嘱根,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布髓废,位于F島的核電站,受9級(jí)特大地震影響该抒,放射性物質(zhì)發(fā)生泄漏慌洪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一凑保、第九天 我趴在偏房一處隱蔽的房頂上張望冈爹。 院中可真熱鬧,春花似錦欧引、人聲如沸频伤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)憋肖。三九已至,卻和暖如春婚苹,著一層夾襖步出監(jiān)牢的瞬間岸更,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工膊升, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怎炊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓廓译,卻偏偏與公主長(zhǎng)得像评肆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子责循,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容