The Swift Programming LanguageのLanguage Guideの"String and Characte"の章をざっとまとめたものです。
Objective-Cを始め、既に他の言語を習得されてる方向けです。
前章 Basic Operators
次章 Collection 配列
- String型は、Character型の連なり
- 文字コードはUnicode
初期化と空文字
var emptyString = ""
var anotherEmptyString = String()
emptyString == anotherEmptyString // true
String Mutability, String are Value Type.
var str = "abc"
str += "def"
str = str + "ghi"
stringは値型なので、別の変数に文字列を代入すると、値コピーされる。
ただし常に値コピーをするのではなく、必要に応じて(おそらく文字列の値が変化するときに)コピーするよう最適化される。
var a = "abc"
var b = a
a == b // true
a === b // false
a === a // ...これもfalseになってしまった
Character
"一文字"がCharacterとして扱える.
let yen:Character = "¥"
for in loop
for ch in "STRING" {
println(ch)
}
文字列長
countElements関数を用いる。
※ ...毎回文字列探索する???
var a = "あいうえお"
countElements(a) // 5
String Interpolation(書き入れ)
Ruby での "abc#{var}" のように文字列中に値をする。
Swiftでは、\(var)で文字列に展開する。
let error = 3
let message = "error=\(error)"
比較
完全一致(==)、接頭辞一致(var.hasPrefix("prefix")、末尾時一致(var.hasSuffix("suffix")を提供する.
var test="abc def ghi"
test == "abc def ghi" // true
test.hasPrefx("abc") // true
test.hasSuffix("ghi") // true
Unicode
- utf8でUInt8の連なりでUnicodeにアクセスできる
- utf16でUInt16の連なりでUnicodeにアクセスできる
- unicodeScalarsでUnicodeScalarの連なりでUnicodeにアクセスできる
var str = "あいうえお"
for ch in str.utf8 {
ch // Uint8の1byteコード.
}
for ch in str.utf16 {
ch // UInt16の2byteコード
}
for ch in str.unicodeScalars {
println("\(ch.value)") // コードとして出力
println("\(ch)") // 文字として出力
}