[iOS] Swift2での文字列Stringの操作

2015/09/14

こんにちは。きんくまです。
イカなんですがB+から全く上がれません、、。そうかと思うとBに落ちたり。うーん。この辺が限界なんでしょうか、A-は遠い、、。

ところで、Swift2だといろいろと変わったところがあるみたいです。
今回はSwift1との差分部分は気にせず文字列操作を自分用にメモしたいと思いました。
StackOverflowを毎回検索するのはちと大変かなと、、。

文字列の操作

定義

let str = "abcde"

文字数を確認したい

let strCount = str.characters.count
print("str count = \(strCount)") // -> str count = 5

文字列を連結

これは + なので簡単ですね

let numStr = "12345"

let strConcat = str + numStr
print("concat = \(strConcat)")

文字列の検索

let strRange:Range? = str.rangeOfString("bc")
print("\(strRange?.startIndex), \(strRange?.count)")

見つからなかったときはnilが返るのでif文だとこんな感じに書けます

if str.rangeOfString("z") != nil {
    print("hit")
}else{
    print("not hit")
}

文字列の置換

var str2 = "123456"
let replacedStr = str2.stringByReplacingOccurrencesOfString("34", withString: "78")
print("\(replacedStr)") // -> 127856

indexを指定して置換

var str2 = "123456"
let replaceStartIndex = str2.startIndex.advancedBy(2)
let replaceEndIndex = replaceStartIndex.advancedBy(3)
let replacedStr2 = str2.stringByReplacingCharactersInRange(Range(start: replaceStartIndex, end: replaceEndIndex),
    withString: "9")
print("\(replacedStr2)") // ->1296

部分的に抜き出す substrみたいの

let substrStartIndex = str.startIndex.advancedBy(1)
let substrEndIndex = substrStartIndex.advancedBy(2)
let substr = str.substringWithRange(Range(start: substrStartIndex, end: substrEndIndex))
print("substr = \(substr)") //-> substr = bc

大文字 / 小文字

let uppercase = str.uppercaseString
print("upper = \(uppercase)") // -> upper = ABCDE

let lowercase = str.lowercaseString
print("lower = \(lowercase)") // -> lower = abcde

文字列から配列へ変換 splitみたいの

let str_numStr = str + " " + numStr
let splittedStr:[String] = str_numStr.componentsSeparatedByString(" ")
print("\(splittedStr[0]), \(splittedStr[1])")

感想
substrみたいのがRangeを定義してちと面倒。subscriptを定義してもいいかもしれないですね。


自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る