この記事の目的
プログラミング言語によって扱い方が異なる文字列.
この記事ではSwiftにおける文字列の扱い方を,まとめて紹介します!
開発にはもちろん,就職活動で必要とされるコーディングテスト対策にも役立つ文字列の使い方を紹介します.
Swiftでは文字列をどのように使用するのかわからなくなった際に,見に来てくれると嬉しいです!
Swiftにおける文字列の基礎
文字列の計算|足し算
Swiftでは文字列同士を足し算を用いてつなげることができます.
let str1 = "Hello" let str2 = "World" let meargedStr = str1 + str2 print(meargedStr) // 出力 = HelloWorld
豆知識|共通部分文字列の判定
ちなみにこの文字列の足し算を用いることで,
最大の共通部分文字列(つまり,str2 = str1+ str1 + … + str1)
を含むか否かを判定することができます.
guard (str1 + str2) == (str2 + str1) else { return "" } // 共通部分文字列が存在する場合の処理
これにより,for文等を用いずに高速で共通部分文字列の有無の判定を行うことができます!
文字列のメソッド
空白文字の判定
文字列が空かどうかを確認するには,isEmptyプロパティを使用します!
let emptyString = "" if emptyString.isEmpty { print("The string is empty.") } // 出力: The string is empty.
大文字・小文字の変換
全ての文字を大文字・小文字に変換するには,uppercased()やlowercased()メソッドを使用します!
let text = "Hello, World!" let upper = text.uppercased() // "HELLO, WORLD!" let lower = text.lowercased() // "hello, world!"
文字列の長さ
文字列の文字数を取得するには,countプロパティを使用します!
let text = "Hello" let length = text.count // 5
これらの他にも様々なプロパティやメソッドが準備されています!
結構マニアックなプロパティも存在するので,必要に応じて調べてみると,意外とデフォルトで用意されているかもしれません.
Swiftにおける文字列の扱い方
文字列を配列のように扱うには?
Swiftの文字列を配列のように,indexを用いて文字を抽出・使用したいこともあると思います.
しかし,単純にword[0]のようには使用できません.
その場合には,word.indexのようにindexを一度得ることで,特定の文字を抽出することができます.
以下のコードは,word.indexを使用した2つのwordを交互につなぐことができるプログラム例になります.
(zipを用いた方法など,処理速度がもっと早いアルゴリズムが存在します)
let word1 = "ACE" let word2 = "BD" var merged_string = "" for i in 0..<max(word1.count, word2.count) { if i < word1.count{ if let word1_index = word1.index(word1.startIndex, offsetBy: i, limitedBy: word1.endIndex) { merged_string.append(word1[word1_index]) } } if i < word2.count{ if let word2_index = word2.index(word2.startIndex, offsetBy: i, limitedBy: word2.endIndex) { merged_string.append(word2[word2_index]) } } } return merged_string // 出力 = ABCDE
ちなみに,if let を用いて安全にアンラップを行っています.
しかし,上記コードではコードが冗長で読みづらいですよね..
そこで,ダイレクトな方法として,文字列を配列に変換することで,配列として扱うことも可能です.
// 1. StringをCharacterの配列に変換する let word = "Hello" let characterArray = Array(word) print(characterArray) // 出力: ["H", "e", "l", "l", "o"]
// 2. 特定の区切り文字で文字列を分割して配列を作成する let sentence = "Swift,Python,Java" let languagesArray = Array(sentence.split(separator: ",")) print(languagesArray) // 出力: ["Swift", "Python", "Java"]
// 3. 空白やその他の文字で分割する let text = "This is a test" let wordsArray = text.split(separator: " ") print(wordsArray) // 出力: ["This", "is", "a", "test"]
おわりに
このブログでは,SwiftやFlutterなどの日々学びつつアウトプットしています.
他にもおすすめツールがあれば教えて下さい!
また,間違いや改善点があれば,ご指摘いただけますと幸いです!