Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
文字列.split() / joined() / 文字列インデックス
Swiftの『split(separator:)』は文字列を分割してSubString配列を返します。『joined(separator:)』は配列の要素を結合します。インデックス操作には『String.Index』を使います。
構文
// 文字列の分割(SubStringの配列を返す) 文字列.split(separator: "文字") 文字列.split(separator: "文字", maxSplits: 上限数) 文字列.split(separator: "文字", omittingEmptySubsequences: false) // 配列の結合 配列.joined(separator: "区切り文字") // インデックス操作 文字列[文字列.startIndex] 文字列[文字列.index(文字列.startIndex, offsetBy: n)] 文字列.prefix(n) 文字列.suffix(n) 文字列.dropFirst(n) 文字列.dropLast(n)
メソッド一覧
| メソッド | 概要 |
|---|---|
| 文字列.split(separator:) | 区切り文字で分割したSubStringの配列を返します。 |
| 文字列.split(separator: maxSplits:) | 最大分割数を指定して分割します。 |
| 配列.joined(separator:) | 配列の要素を指定した区切り文字で結合した文字列を返します。 |
| 文字列.prefix(n) | 先頭n文字のSubStringを返します。 |
| 文字列.suffix(n) | 末尾n文字のSubStringを返します。 |
| 文字列.dropFirst(n) | 先頭n文字を除いたSubStringを返します。 |
| 文字列.dropLast(n) | 末尾n文字を除いたSubStringを返します。 |
| 文字列.index(startIndex, offsetBy: n) | startIndexからn文字目のString.Indexを返します。 |
サンプルコード
// split: 文字列を分割
let sentence = "Swift は 型安全 な 言語 です"
let words = sentence.split(separator: " ")
print(words) // ["Swift", "は", "型安全", "な", "言語", "です"]
print(type(of: words[0])) // Substring
// String に変換
let wordStrings = words.map { String($0) }
// maxSplits で分割数を制限
let csv = "A,B,C,D,E"
let parts = csv.split(separator: ",", maxSplits: 2)
print(parts) // ["A", "B", "C,D,E"]
// joined: 配列を結合
let fruits = ["りんご", "みかん", "ぶどう"]
let joined = fruits.joined(separator: "、")
print(joined) // りんご、みかん、ぶどう
let path = ["Users", "taro", "Documents"]
print(path.joined(separator: "/")) // Users/taro/Documents
// prefix / suffix / dropFirst / dropLast
let text = "Hello, World!"
print(text.prefix(5)) // Hello
print(text.suffix(6)) // World!
print(text.dropFirst(7)) // World!
print(text.dropLast(1)) // Hello, World
// String.Index でのアクセス
let str = "あいうえお"
let startIdx = str.startIndex
let thirdIdx = str.index(startIdx, offsetBy: 2) // 3文字目
print(str[thirdIdx]) // う
// 範囲でスライス
let range = str.index(startIdx, offsetBy: 1) ..< str.index(startIdx, offsetBy: 4)
print(str[range]) // いうえ
概要
『split(separator:)』は『Substring』の配列を返します。『Substring』は元の文字列のメモリを共有するビューです。文字列として独立して保持したい場合は『String($0)』でコピーしてください。
Swiftの文字列インデックスは整数ではなく『String.Index』型です。文字列の長さがUncode依存のため、O(1)での任意位置アクセスができません。大量のインデックスアクセスが必要な場合はパフォーマンスに注意してください。『prefix()』や『suffix()』は内部的にインデックス計算を行いますが、コードの可読性が高いため積極的に使いましょう。
文字列の基本(count・isEmpty)については文字列.count / isEmpty / 文字列リテラルを参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。