遍匈 / Swift / Swift縮殻 /

Swift忖憲堪才忖憲

<貧匯准 和匯准>
String 頁匯倖嗤會議忖憲鹿栽?箭泌 "hello, world", "albatross"。Swift 忖憲堪宥狛 String 窃侏栖燕幣?匆辛參燕幣葎 Character 窃侏峙議鹿栽。

Swift 議 String 才 Character 窃侏戻工阻匯倖酔堀議?惹否 Unicode 議圭塀栖侃尖旗鷹嶄議猟云佚連。幹秀才荷恬忖憲堪議囂隈嚥 C議荷恬圭塀屢貌?煤楚旺拝叟響。忖憲堪銭俊荷恬峪俶勣酒汽仇宥狛 + 催繍曾倖忖憲堪屢銭軸辛。嚥 Swift 嶄凪麿峙匯劔?嬬倦厚個忖憲堪議峙?函畳噐凪瓜協吶葎械楚珊頁延楚。
勝砿囂隈酒叟?徽 String 窃侏頁匯嶽酔堀、孖旗晒議忖憲堪糞孖。耽匯倖忖憲堪脅頁喇鏡羨園鷹議 Unicode 忖憲怏撹?旺戻工阻喘噐恵諒宸乂忖憲壓音揖議Unicode燕幣議屶隔。

String 匆辛參喘噐壓械楚、延楚、忖中楚才燕器塀嶄序佩忖憲堪峨峙?宸聞誼幹秀喘噐婢幣、贋刈才嬉咫議忖憲堪延誼煤防徭泌。

廣吭?Swift 議 String 窃侏嚥 Foundation NSString 窃序佩阻涙血播俊。泌惚艇旋喘 Cocoa 賜 Cocoa Touch 嶄議 Foundation 崇尺序佩垢恬?屁倖 NSString API 脅辛參距喘艇幹秀議販吭 String 窃侏議峙?艇駆翌珊辛參壓販吭 API 嶄聞喘云嫗初府議 String 蒙來。艇匆辛參壓販吭勣箔勧秘NSString 糞箭恬葎歌方議 API 嶄聞喘 String 窃侏議峙序佩紋算。

厚謹購噐壓 Foundation 才 Cocoa 嶄聞喘 String 議佚連萩臥心 Using Swift with Cocoa and Objective-C

忖憲堪忖中楚

艇辛參壓艇議旗鷹嶄淫根匯粁圓協吶議忖憲堪峙恬葎忖憲堪忖中楚。忖憲堪忖中楚頁喇褒哈催淫骨彭議醤嗤耕協乏會議猟云忖憲鹿。

忖憲堪忖中楚辛參喘噐葎械楚才延楚戻工兜兵峙。
let someString = "Some string literal value"
廣吭?someString 延楚宥狛忖憲堪忖中楚序佩兜兵晒?Swift 咀緩容僅凪葎 String 窃侏。

忖憲堪忖中楚辛參淫根參和蒙歩忖憲?
  • 廬卞蒙歩忖憲 0円 (腎忖憲)、\\(郡弍?)、\t (邦峠崙燕憲)、\n (算佩憲)、\r (指概憲)、\" (褒哈催)、\' (汽哈催)。
  • 汽忖准 Unicode 炎楚?亟撹 \xnn?凪嶄 nn 葎曾了噴鎗序崙方。
  • 褒忖准 Unicode 炎楚?亟撹 \unnnn?凪嶄 nnnn 葎膨了噴鎗序崙方。
  • 膨忖准 Unicode 炎楚?亟撹 \Unnnnnnnn?凪嶄 nnnnnnnn 葎伊了噴鎗序崙方。

和中議旗鷹葎光嶽蒙歩忖憲議聞喘幣箭。

wiseWords 械楚淫根阻曾倖廬卞蒙歩忖憲 (褒凄催)?dollarSign、blackHeart 才 sparklingHeart 械楚處幣阻眉嶽音揖鯉塀議 Unicode 炎楚?
let wiseWords = "\"厘頁勣撹葎今竒藍議槻繁\" - 揃敬"
// "厘頁勣撹葎今竒藍議槻繁" - 揃敬
let dollarSign = "\x24" // ,ドル Unicode 炎楚 U+0024
let blackHeart = "\u2665" // ♥, Unicode 炎楚 U+2665
let sparklingHeart = "\U0001F496" // 💖, Unicode 炎楚 U+1F496

兜兵晒腎忖憲堪

葎阻更夛匯倖載海議忖憲堪?辛參幹秀匯倖腎忖憲堪恬葎兜兵峙。辛參繍腎議忖憲堪忖中楚験峙公延楚?匆辛參兜兵晒匯倖仟議String 糞箭?
var emptyString = "" // 腎忖憲堪忖中楚
var anotherEmptyString = String() // 兜兵晒 String 糞箭
// 曾倖忖憲堪譲葎腎旺吉勺。
艇辛參宥狛殊臥凪 Boolean 窃侏議 isEmpty 奉來栖登僅乎忖憲堪頁倦葎腎?
if emptyString.isEmpty {
 println("焚担脅短嗤")
}
// 嬉咫補竃?"焚担脅短嗤"

忖憲堪辛延來

艇辛參宥狛繍匯倖蒙協忖憲堪蛍塘公匯倖延楚栖斤凪序佩俐個?賜宀蛍塘公匯倖械楚栖隠屬凪音氏瓜俐個?
var variableString = "Horse"
variableString += " and carriage" // variableString 孖壓葎 "Horse and carriage"
let constantString = "Highlander"
constantString += " and another Highlander" // 宸氏烏御匯倖園咎危列(compile-time error) - 械楚音辛參瓜俐個。 
廣吭?壓 Objective-C 才 Cocoa 嶄?艇宥狛僉夲曾倖音揖議窃( NSString 才 NSMutableString )栖峺協乎忖憲堪頁倦辛參瓜俐個?Swift嶄議忖憲堪頁倦辛參俐個叙宥狛協吶議頁延楚珊頁械楚栖畳協?糞孖阻謹嶽窃侏辛延來荷恬議由匯。

忖憲堪頁峙窃侏

Swift 議 String 窃侏頁峙窃侏。泌惚艇幹秀阻匯倖仟議忖憲堪?椎担輝凪序佩械楚、延楚験峙荷恬賜壓痕方/圭隈嶄勧弓扮?氏序佩峙申唄。販採秤趨和?脅氏斤厮嗤忖憲堪峙幹秀仟険云?旺斤乎仟険云序佩勧弓賜験峙。峙窃侏壓 Structures and Enumerations Are Value Types 嶄序佩阻傍苧。
廣吭?凪 Cocoa 嶄議 NSString 音揖?輝艇壓 Cocoa 嶄幹秀阻匯倖 NSString 糞箭?旺繍凪勧弓公匯倖痕方/圭隈?賜宀験峙公匯倖延楚?艇喟垓脅頁勧弓賜験峙揖匯倖 NSString 糞箭議匯倖哈喘。茅掲艇蒙艶勣箔凪序佩峙申唄?倦夸忖憲堪音氏序佩験峙仟険云荷恬。
Swift 潮範忖憲堪申唄議圭塀隠屬阻壓痕方/圭隈嶄勧弓議頁忖憲堪議峙?凪苧鳩阻涙胎乎峙栖徭噐陳戦?脅頁艇鏡徭啜嗤議。艇辛參慧伉艇勧弓議忖憲堪云附音氏瓜厚個。

壓糞縞園咎扮?Swift園咎匂氏單晒忖憲堪議聞喘?聞糞縞議鹸崙峪窟伏壓蒸斤駅勣議秤趨和?宸吭龍彭艇兵嶮辛參繍忖憲堪恬葎峙窃侏議揖扮資誼自互議來嬬。

聞喘忖憲(Characters)

Swift 議 String 窃侏燕幣蒙協會双議忖憲峙議鹿栽。耽匯倖忖憲峙旗燕匯倖 Unicode 忖憲。艇辛旋喘 for-in 儉桟栖演煽忖憲堪嶄議耽匯倖忖憲?
for character in "Dog!" {
 println(character)
}
// D
// o
// g
// !
for-in 儉桟壓For Loops嶄序佩阻峋聾宙峰。

総翌?宥狛炎苧匯倖 Character 窃侏廣盾旺宥狛忖憲忖中楚序佩験峙?辛參秀羨匯倖鏡羨議忖憲械楚賜延楚?
let yenSign: Character = "¥" 

柴麻忖憲方楚

宥狛距喘畠蕉 countElements 痕方旺繍忖憲堪恬葎歌方序佩勧弓辛參資函乎忖憲堪議忖憲方楚。
let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪"
println("unusualMenagerie has \(countElements(unusualMenagerie)) characters") // prints "unusualMenagerie has 40 characters" 
廣吭?音揖議 Unicode 忖憲參式屢揖 Unicode 忖憲議音揖燕幣圭塀辛嬬俶勣音揖方楚議坪贋腎寂栖贋刈?侭參Swift 嶄議忖憲壓匯倖忖憲堪嶄旺音匯協媼喘屢揖議坪贋腎寂。咀緩?忖憲堪議海業音誼音宥狛亨旗忖憲堪嶄耽匯倖忖憲議海業栖序佩柴麻。泌惚艇屎壓侃尖匯倖海忖憲堪?俶勣廣吭 countElements 痕方駅倬演煽忖憲堪嶄議忖憲參娼彈柴麻忖憲堪議海業。

総翌俶勣廣吭議頁宥狛 countElements 卦指議忖憲方楚旺音悳頁嚥淫根屢揖忖憲議 NSString 議 length 奉來屢揖。NSString 議 length 奉來頁児噐旋喘 UTF-16 燕幣議噴鎗了旗鷹汽圷方忖?遇音頁児噐 Unicode 忖憲。葎阻盾畳宸倖諒籾?NSString 議 length 奉來壓瓜 Swift議 String 恵諒扮氏撹葎 utf16count。

銭俊忖憲堪才忖憲

忖憲堪才忖憲議峙辛參宥狛紗隈塰麻憲 (+) 屢紗壓匯軟旺幹秀匯倖仟議忖憲堪峙?
let string1 = "hello"
let string2 = " there"
let character1: Character = "!"
let character2: Character = "?"
let stringPlusCharacter = string1 + character1 // 吉噐 "hello!"
let stringPlusString = string1 + string2 // 吉噐 "hello there"
let characterPlusString = character1 + string1 // 吉噐 "!hello"
let characterPlusCharacter = character1 + character2 // 吉噐 "!?" 
艇匆辛參宥狛紗隈験峙塰麻憲 (+=) 繍匯倖忖憲堪賜宀忖憲耶紗欺匯倖厮将贋壓忖憲堪延楚貧?
var instruction = "look over"
instruction += string2
// instruction 孖壓吉噐 "look over there"
var welcome = "good morning"
welcome += character1
// welcome 孖壓吉噐 "good morning!" 
廣吭?艇音嬬繍匯倖忖憲堪賜宀忖憲耶紗欺匯倖厮将贋壓議忖憲延楚貧?咀葎忖憲延楚峪嬬淫根匯倖忖憲。

忖憲堪峨峙

忖憲堪峨峙頁匯嶽畠仟議更秀忖憲堪議圭塀?辛參壓凪嶄淫根械楚、延楚、忖中楚才燕器塀。艇峨秘議忖憲堪忖中楚議耽匯?脅瓜淫骨壓參郡弍?葎念弸議垈凄催嶄?
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
// message is "3 times 2.5 is 7.5" 
壓貧中議箭徨嶄?multiplier 恬葎 \(multiplier) 瓜峨秘欺匯倖忖憲堪忖中楚嶄。輝幹秀忖憲堪峇佩峨峙柴麻扮緩媼了憲氏瓜紋算葎 multiplier 糞縞議峙。

multiplier 議峙匆恬葎忖憲堪嶄朔中燕器塀議匯何蛍。乎燕器塀柴麻 Double(multiplier) * 2.5 議峙旺繍潤惚 (7.5) 峨秘欺忖憲堪嶄。壓宸倖箭徨嶄?燕器塀亟葎 \(Double(multiplier) * 2.5) 旺淫根壓忖憲堪忖中楚嶄。
廣吭?艇峨峙忖憲堪嶄亟壓凄催嶄議燕器塀音嬬淫根掲廬吶褒哈催 (") 才郡弍顧 (\)?旺拝音嬬淫根指概賜算佩憲。

曳熟忖憲堪

Swift 戻工阻眉嶽圭塀栖曳熟忖憲堪議峙?忖憲堪屢吉?念弸屢吉才朔弸屢吉。

忖憲堪屢吉

泌惚曾倖忖憲堪參揖匯乏會淫根頼畠屢揖議忖憲?夸範葎曾宀忖憲堪屢吉?
let quotation = "We're a lot alike, you and I."
let sameQuotation = "We're a lot alike, you and I."
if quotation == sameQuotation {
 println("These two strings are considered equal")
}
// prints "These two strings are considered equal" 

念弸/朔弸屢吉

宥狛距喘忖憲堪議 hasPrefix/hasSuffix 圭隈栖殊臥忖憲堪頁倦啜嗤蒙協念弸/朔弸。曾倖圭隈譲俶勣參忖憲堪恬葎歌方勧秘旺勧竃 Boolean 峙。曾倖圭隈譲峇佩児云忖憲堪才念弸/朔弸忖憲堪岻寂幟倖忖憲議曳熟荷恬。

和中議箭徨參匯倖忖憲堪方怏燕幣逼平曳冉三丞 袋畜天嚥幀洗匐 嶄念曾魁議魁尚了崔?
let romeoAndJuliet = [
 "Act 1 Scene 1: Verona,A public place",
 "Act 1 Scene 2: Capulet's mansion",
 "Act 1 Scene 3: A room in Capulet's mansion",
 "Act 1 Scene 4: A street outside Capulet's mansion",
 "Act 1 Scene 5: The Great Hall in Capulet's mansion",
 "Act 2 Scene 1: Outside Capulet's mansion",
 "Act 2 Scene 2: Capulet's orchard",
 "Act 2 Scene 3: Outside Friar Lawrence's cell",
 "Act 2 Scene 4: A street in Verona",
 "Act 2 Scene 5: Capulet's mansion",
 "Act 2 Scene 6: Friar Lawrence's cell" ] 
艇辛參旋喘 hasPrefix 圭隈栖柴麻三丞嶄及匯鳥議魁尚方?
var act1SceneCount = 0
for scene in romeoAndJuliet {
 if scene.hasPrefix("Act 1 ") {
 ++act1SceneCount
 }
}
println("There are \(act1SceneCount) scenes in Act 1")
// prints "There are 5 scenes in Act 1" 

寄亟才弌亟忖憲堪

艇辛參宥狛忖憲堪議 uppercaseString 才 lowercaseString 奉來栖恵諒匯倖忖憲堪議寄亟/弌亟井云。
let normal = "Could you help me, please?"
let shouty = normal.uppercaseString // shouty 峙葎 "COULD YOU HELP ME, PLEASE?"
let whispered = normal.lowercaseString // whispered 峙葎 "could you help me, please?" 

Unicode

Unicode 頁猟云園鷹才燕幣議忽縞炎彈。万聞艇辛參喘炎彈鯉塀燕幣栖徭販吭囂冱叱窄侭嗤議忖憲?旺嬬校斤猟云猟周賜利匈宸劔議翌何彿坿嶄議忖憲序佩響亟荷恬。

Swift 議忖憲堪才忖憲窃侏頁頼畠惹否 Unicode 議?万屶隔泌和侭峰議匯狼双音揖議 Unicode 園鷹。

Unicode 宝囂(Terminology)

Unicode 嶄耽匯倖忖憲脅辛參瓜盾瞥葎匯倖賜謹倖 unicode 炎楚。忖憲議 unicode 炎楚頁匯倖率匯議21了方忖(才兆各)?箭泌U+0061 燕幣弌亟議性供忖銚A ("a")?U+1F425 燕幣屎中嫋羨議痔右右 ("🐥")

輝 Unicode 忖憲堪瓜亟序猟云猟周賜凪麿贋刈潤更輝嶄?宸乂 unicode 炎楚繍氏梓孚 Unicode 協吶議鹿嶄鯉塀岻匯序佩園鷹。凪淫凄 UTF-8 (參8了旗鷹汽圷序佩園鷹) 才 UTF-16 (參16了旗鷹汽圷序佩園鷹)。

忖憲堪議 Unicode 燕幣

Swift 戻工阻叱嶽音揖議圭塀栖恵諒忖憲堪議 Unicode 燕幣。

艇辛參旋喘 for-in 栖斤忖憲堪序佩演煽?貫遇參 Unicode 忖憲議圭塀恵諒耽匯倖忖憲峙。乎狛殻壓 Working with Characters 嶄序佩阻宙峰。

総翌?嬬校參凪麿眉嶽 Unicode 惹否議圭塀恵諒忖憲堪議峙?
  • UTF-8 旗鷹汽圷鹿栽 (旋喘忖憲堪議 utf8 奉來序佩恵諒)
  • UTF-16 旗鷹汽圷鹿栽 (旋喘忖憲堪議 utf16 奉來序佩恵諒)
  • 21了議 Unicode 炎楚峙鹿栽 (旋喘忖憲堪議 unicodeScalars 奉來序佩恵諒)

和中喇 D o g ! 才 🐶 (昂然燕秤?Unicode 炎楚葎 U+1F436)怏撹議忖憲堪嶄議耽匯倖忖憲旗燕彭匯嶽音揖議燕幣?
let dogString = "Dog!🐶" 

UTF-8

艇辛參宥狛演煽忖憲堪議 utf8 奉來栖恵諒万議 UTF-8 燕幣。凪葎 UTF8View 窃侏議奉來?UTF8View 頁涙憲催8了 (UInt8) 峙議鹿栽?耽匯倖 UIn8 脅頁匯倖忖憲議 UTF-8 燕幣?
for codeUnit in dogString.utf8 {
 print("\(codeUnit) ")
}
print("\n")
// 68 111 103 33 240 159 144 182 
貧中議箭徨嶄?念膨倖10序崙旗鷹汽圷峙 (68, 111, 103, 33) 旗燕阻忖憲 D o g 才 ! ?麿断議 UTF-8 燕幣嚥 ASCII 燕幣屢揖。朔膨倖旗鷹汽圷峙 (240, 159, 144, 182) 頁 昂然燕秤 議4了 UTF-8 燕幣。

UTF-16

艇辛參宥狛演煽忖憲堪議 utf16 奉來栖恵諒万議 UTF-16 燕幣。凪葎 UTF16View 窃侏議奉來?UTF16View 頁涙憲催16了 (UInt16) 峙議鹿栽?耽匯倖 UInt16 脅頁匯倖忖憲議 UTF-16 燕幣?
for codeUnit in dogString.utf16 {
 print("\(codeUnit) ")
}
print("\n")
// 68 111 103 33 55357 56374 
揖劔?念膨倖旗鷹汽圷峙 (68, 111, 103, 33) 旗燕阻忖憲 D o g 才 ! ?麿断議 UTF-16 旗鷹汽圷才 UTF-8 頼畠屢揖。

及励才及鎗倖旗鷹汽圷峙 (55357 and 56374) 頁 昂然燕秤 忖憲議UTF-16 燕幣。及匯倖峙葎 U+D83D (噴序崙峙葎 55357)?及屈倖峙葎 U+DC36 (噴序崙峙葎 56374)。

Unicode 炎楚 (Scalars)

艇辛參宥狛演煽忖憲堪議 unicodeScalars 奉來栖恵諒万議 Unicode 炎楚燕幣。凪葎 UnicodeScalarView 窃侏議奉來?UnicodeScalarView 頁 UnicodeScalar 議鹿栽。UnicodeScalar 頁21了議 Unicode 旗鷹泣。

耽匯倖 UnicodeScalar 啜嗤匯倖峙奉來?辛參卦指斤哘議21了方峙?喘 UInt32 栖燕幣。
for scalar in dogString.unicodeScalars {
 print("\(scalar.value) ")
}
print("\n")
// 68 111 103 33 128054 
揖劔?念膨倖旗鷹汽圷峙 (68, 111, 103, 33) 旗燕阻忖憲 D o g 才 ! 。及励了方峙?128054?頁匯倖噴鎗序崙1F436議噴序崙燕幣。凪吉揖噐 昂然燕秤 議Unicode 炎楚 U+1F436。

恬葎臥儂忖憲峙奉來議匯嶽紋旗圭隈?耽倖 UnicodeScalar 峙匆辛參喘栖更秀匯倖仟議忖憲堪峙?曳泌壓忖憲堪峨峙嶄聞喘?
for scalar in dogString.unicodeScalars {
 println("\(scalar) ")
}
// D
// o
// g
// !
// 🐶
<貧匯准 和匯准>

AltStyle によって変換されたページ (->オリジナル) /