使用“ """ ”創(chuàng)建多行字符串
使用超過下方引號前空格數的空格縮進
使用string.isEmpty判斷字符串是否為空
使用let和var區(qū)別是否可變
這里只是單純的是否可變盒粮,區(qū)別與oc中NSString與NSMutableString是否可變的復雜機制。可以使用string()創(chuàng)建
swift中string是值類型奠滑,不同于Oc中string作為特殊的對象類型丹皱,會自動進行值拷貝(所謂的值拷貝就是將a的值賦予b之后改變b的值不會影響到a,這是值類型的特征宋税,不同于對象類型儲存于同一內存改變其中一個會影響另一個摊崭,詳情寫在oc的基本知識里)
可以使用forin遍歷string中的characters
-
可以使用字符數組作為參數構件字符
let catCharacters:[Character] = ["C","a","t","!","??"] let cat = String(catCharacters)
多行字符串相加時后者第一行會加在前者最后一行后(前者需手動留空白行)。
使用\()在字符串中加入變量
-
由于不同類型的字符編碼位數不同造成大小不同杰赛,所以 string 中的 index 不能用 int 類型呢簸。只能用如下方式:
let greeting = "Guten Tag!" greeting[greeting.startIndex] // G greeting[greeting.index(before: greeting.endIndex)] // ! greeting[greeting.index(after: greeting.startIndex)] // u let index = greeting.index(greeting.startIndex, offsetBy: 7) greeting[index] // a
-
endIndex 為最后一個字符串結尾的位置,所以訪問字符串最后一個字符用
brefore:endIndex
乏屯,否則如下:greeting[greeting.endIndex] // Error greeting.index(after: greeting.endIndex) // Error
-
使用 indices 屬性遍歷字符串中所有字符
for index in greeting.indices { print("\(greeting[index]) ", terminator: "") } // Prints "G u t e n T a g ! "
index(before:)
,index(after:)
, 以及index(_:offsetBy:)
可以用于所有遵循 Collection 協議的類型根时,包括 String,Array辰晕,Dictionary蛤迎,Set。-
使用string.insert和string.remove插入和刪除character
var welcome = "hello" welcome.insert("!", at: welcome.endIndex) welcome.insert(contentsOf: " there", at: welcome.index(before:welcome.endIndex)) welcome.remove(at: welcome.index(before: welcome.endIndex)) let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex welcome.removeSubrange(range)
insert和remove可以用于任何遵守RangeReplaceableCollection協議的對象含友,包括String替裆,Array校辩,Dictionary,and Set辆童。
-
SubString 為截取 String 形成的子字符串宜咒,類似于 String,有著幾乎通用的方法(都遵循
StringProtocol
協議)把鉴。不過 SubString 只能作為臨時變量故黑,不能存儲,需要轉為 String 纸镊。let greeting = "Hello, world!" //特別的index類型 let index = greeting.firstIndex(of: ",") ?? greeting.endIndex //以string作為character數組倍阐,并在[]中傳入index列表截取字符串 let beginning = greeting[..<index] // beginning is "Hello" // Convert the result to a String for long-term storage. let newString = String(beginning)
原理:
SubString 實際上是重用相對應 String 中的部分內存,所以如果 SubString 長期占用其內存逗威,相應的源 String也需要長期存在不能被釋放。故此 SubString 不能長期存儲(substrings aren’t suitable for long-term storage) 使用
==
和!=
判斷兩個字符串是否一致岔冀。使用hasPrefix
判斷是否以某一字符串開頭凯旭,使用hasSuffix
判斷是否以某一字符串結尾。utf8和utf16可以用一位表示某些字符使套,但是例如??罐呼,可能需要多個。而Unicode Scalar使用12bit侦高,可以用一位表示各種字符嫉柴。
Strings and Characters
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秦忿,“玉大人麦射,你說我怎么就攤上這事〉埔ィ” “怎么了潜秋?”我有些...
- 正文 為了忘掉前任杀饵,我火速辦了婚禮莽囤,結果婚禮上,老公的妹妹穿的比我還像新娘切距。我一直安慰自己朽缎,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布谜悟。 她就那樣靜靜地躺著话肖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葡幸。 梳的紋絲不亂的頭發(fā)上最筒,一...
- 文/蒼蘭香墨 我猛地睜開眼搀别,長吁一口氣:“原來是場噩夢啊……” “哼丹擎!你這毒婦竟也來了?” 一聲冷哼從身側響起歇父,我...
- 正文 年R本政府宣布,位于F島的核電站卡儒,受9級特大地震影響田柔,放射性物質發(fā)生泄漏俐巴。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一硬爆、第九天 我趴在偏房一處隱蔽的房頂上張望欣舵。 院中可真熱鬧,春花似錦缀磕、人聲如沸缘圈。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽糟把。三九已至,卻和暖如春牲剃,著一層夾襖步出監(jiān)牢的瞬間遣疯,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內容
- Swift學習有問必答群 : 313838956 ( mac版QQ有權限要求, 入群只能通過手機版 QQ申請...
- 我?guī)缀趺刻於紩g覽一下亞馬遜的kindle板塊疚宇,去看看每天在打折的都是些什么書,偶爾確實能夠用很便宜的價格買到質量...
- 健身差不多半年了赏殃,健身習慣也逐漸養(yǎng)成敷待,另外我在飲食方面的習慣也在逐漸養(yǎng)成... 我追求一種極簡的生活飲食模式,無關...