この記事の目的
言語によって扱い方が異なる文字列.
この記事ではSwiftにおける文字列の扱い方を,まとめて紹介します!
開発にはもちろん,コーディングテストにも役立つ文字列の使い方になります.
Swiftでは文字列をどのように使用するのかわからなくなった際に,見に来てくれると嬉しいです!
Swiftにおける文字列の基礎
文字列の計算|足し算
Swiftでは文字列同士を足し算を用いてつなげることができます.
let str1 = "Hello"
let str2 = "World"
let meargedStr = str1 + str2
print(meargedStr)
// 出力 = HelloWorld
Swiftちなみにこの文字列の足し算を用いることで,
最大の共通部分文字列(つまり,str2 = str1+ str1 + … + str1)
を含むか否かを判定することができます.
guard (str1 + str2) == (str2 + str1) else { return "" }
// 共通部分文字列が存在する場合の処理
SwiftSwiftにおける文字列の扱い方
文字列を配列のように扱うには?
Swiftの文字列を配列のように,indexを用いて文字を抽出・使用したいこともあると思います.
しかし,単純にword[2]のようには使用できません.
その場合には,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
Swiftちなみに,if let を用いて安全にアンラップを行っています.
しかし,上記コードではコードが冗長で読みづらいですよね..
そこで,ダイレクトな方法として,文字列を配列に変換することで,配列として扱うことも可能です.
// 1. StringをCharacterの配列に変換する
let word = "Hello"
let characterArray = Array(word)
print(characterArray) // 出力: ["H", "e", "l", "l", "o"]
Swift// 2. 特定の区切り文字で文字列を分割して配列を作成する
let sentence = "Swift,Python,Java"
let languagesArray = Array(sentence.split(separator: ","))
print(languagesArray) // 出力: ["Swift", "Python", "Java"]
Swift// 3. 空白やその他の文字で分割する
let text = "This is a test"
let wordsArray = text.split(separator: " ")
print(wordsArray) // 出力: ["This", "is", "a", "test"]
Swiftおわりに
このブログでは,SwiftやFlutterなどの日々学びつつアウトプットしています.
また,間違いや改善点があれば,ご指摘いただけますと幸いです!