#Stringってなに?
- Swiftがデフォルトで用意してくれている文字列を扱うデータ型
- 文字列を "Stringクラスのオブジェクト" として扱う
let name:String = "Usako"
いろいろと便利なメソッドをデフォルトで持ってくれているので以下に覚書としてまとめました。
##文字列の長さを求める(返り値:Int)
var count: Int { get }
let name:String = "USAKO"
let num:Int = name.count() //num -> 5
##同じ文字列であるか比較する(返り値:Bool)
- 大文字小文字も区別する
let name:String = "USAKO"
if name == "Usako" {//trueのとき
print("Usakoと同じ")
}else{
print("Usakoと違う") //違うになる
}
##文字列を結合する
- swiftは+で文字列結合もできる。便利。
let name:String = "USAKO"
let name2:String = "no"
let name3:String = name + name2 + "SIPPO" //name3 -> USAKOnoSIPPO
##前から指定した文字数分の文字列を切り出す(返り値:String)
func prefix(_ maxLength: Int) -> Substring
let name:String = "USAKO"
print(name.prefix(3)) //USA
##後ろから指定した文字数分の文字列を切り出す(返り値:String)
func suffix(_ maxLength: Int) -> Substring
let name:String = "USAKO"
print(name.suffix(3)) //AKO
##指定した範囲の文字列を切り出す
let name:String = "USAKOnoSIPPO"
var start:String.Index = name.startIndex //String型オブジェクトの開始位置Indexを取得
start = name.Index(start, offsetBy:2) //String型オブジェクトの開始位置から1文字分後ろにずらす
let end:String.Index = name.index(start, offsetBy:) //さらにstart位置から3文字後ろにずらす
print(name[start...end]) //AKOno
print(name[start..<end]) //AKOn
##文字列を前方比較する(返り値:Bool)
func hasPrefix(_ prefix: String) -> Bool
- 前方一致するかどうかを返す
- 大文字小文字も区別する
let name:String = "USAKO"
if (name.hasPrefix("USA")){ //trueのとき
print("USAから始まる文字列")
}else{
print("USAから始まらない文字列")
}
##文字列を後方比較する(返り値:Bool)
func hasSuffix(_ suffix: String) -> Bool
- 後方一致するかどうかを返す
- 大文字小文字も区別する
let name:String = "USAKO"
if (name.hasSuffix("KO")){ //trueのとき
print("KOで終わる文字列")
}else{
print("KOで終わらない文字列")
}
##文字列の中に指定した文字列が含まれるかどうか(返り値:Bool)
func contains(_ element: Character) -> Bool
let name:String = "USAKO"
if (name.contains("SAK")){ //trueのとき
print("SAKが含まれる文字列")
}else{
print("SAKが含まれない文字列")
}
##文字列の中の指定した文字列を置換する
mutating func replaceSubrange<C, R>(_ subrange: R, with newElements: C)
- 指定した文字列が複数ある場合、最初の文字列しか置換されない
- 複数置換するにはループさせる必要がある
- 文字列を破壊して置き換えるので要注意
let name:String = "USAKO"
if range:Range = name.range(of: KO){ //KOの含まれる範囲のrangeを取得できたとき
name.replaceSubrange(range, with:"!!")
}
print(name) //USA!!
let name:String = "USAKOUSAKOUSAKOKO"
while(range:Range = name.range(of: KO)){ //KOの含まれる範囲のrangeを取得できている間ループ
name.replaceSubrange(range, with:"!!")
}
print(name) //USA!!USA!!USA!!!!
##まとめ
Stringのその他便利アイテムは以下を参照のこと
https://developer.apple.com/documentation/swift/string
C言語を終えたところでオブジェクト指向を学習すると便利過ぎて泣けました🐰
これから覚えた内容を覚書きしていこうと思います。
指摘等ありましたらビシバシお願い致します。