11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Swift4】Stringクラスの文字列操作まとめ

Posted at

#Stringってなに?

  • Swiftがデフォルトで用意してくれている文字列を扱うデータ型
  • 文字列を "Stringクラスのオブジェクト" として扱う
qiita.swift
 let name:String = "Usako" 

 いろいろと便利なメソッドをデフォルトで持ってくれているので以下に覚書としてまとめました。

##文字列の長さを求める(返り値:Int)
var count: Int { get }

qiita.swift
let name:String = "USAKO"
let num:Int = name.count() //num -> 5

##同じ文字列であるか比較する(返り値:Bool)

  • 大文字小文字も区別する
qiita.swift
let name:String = "USAKO" 

if name == "Usako" {//trueのとき
    print("Usakoと同じ")
}else{
    print("Usakoと違う") //違うになる
}

##文字列を結合する

  • swiftは+で文字列結合もできる。便利。
qiita.swift
let name:String = "USAKO"
let name2:String = "no"
let name3:String = name + name2 + "SIPPO" //name3 -> USAKOnoSIPPO

##前から指定した文字数分の文字列を切り出す(返り値:String)
func prefix(_ maxLength: Int) -> Substring

qiita.swift
let name:String = "USAKO"
print(name.prefix(3)) //USA

##後ろから指定した文字数分の文字列を切り出す(返り値:String)
func suffix(_ maxLength: Int) -> Substring

qiita.swift
let name:String = "USAKO"
print(name.suffix(3)) //AKO

##指定した範囲の文字列を切り出す

qiita.swift
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

  • 前方一致するかどうかを返す
  • 大文字小文字も区別する
qiita.swift
let name:String = "USAKO"
if (name.hasPrefix("USA")){ //trueのとき
   print("USAから始まる文字列")
}else{
   print("USAから始まらない文字列")
}

##文字列を後方比較する(返り値:Bool)
func hasSuffix(_ suffix: String) -> Bool

  • 後方一致するかどうかを返す
  • 大文字小文字も区別する
qiita.swift
let name:String = "USAKO"
if (name.hasSuffix("KO")){ //trueのとき
   print("KOで終わる文字列")
}else{
   print("KOで終わらない文字列")
}

##文字列の中に指定した文字列が含まれるかどうか(返り値:Bool)
func contains(_ element: Character) -> Bool

qiita.swift
let name:String = "USAKO"
if (name.contains("SAK")){ //trueのとき
   print("SAKが含まれる文字列")
}else{
   print("SAKが含まれない文字列")
}

##文字列の中の指定した文字列を置換する
mutating func replaceSubrange<C, R>(_ subrange: R, with newElements: C)

  • 指定した文字列が複数ある場合、最初の文字列しか置換されない
  • 複数置換するにはループさせる必要がある
  • 文字列を破壊して置き換えるので要注意
qiita.swift
let name:String = "USAKO"
if range:Range = name.range(of: KO){ //KOの含まれる範囲のrangeを取得できたとき
   name.replaceSubrange(range, with:"!!")
}
print(name) //USA!!
qiita.swift
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言語を終えたところでオブジェクト指向を学習すると便利過ぎて泣けました🐰
これから覚えた内容を覚書きしていこうと思います。
指摘等ありましたらビシバシお願い致します。

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?