文書 > Swift > Dictionary > Order Dependent Operations on Dictionary > split(maxSplits:omittingEmptySubsequences:where
Separator:)
インスタンスメソッド
split(maxSplits:omittingEmptySubsequences:where
Separator:)
与えられた述語 (predicate) を満たす要素を含まない、コレクションの可能な限り長い部分シーケンスを順番に返します。
宣言
パラメータ
maxSplits | コレクションを分割する最大回数、または返すべき部分シーケンスの数より 1 回少ない回数。maxSplits + 1 の部分シーケンスが返される場合、最後の 1 つは残りの要素を含む元のコレクションの接尾辞です。 maxSplits はゼロ以上でなければなりません。デフォルト値は Int.max です。 |
omittingEmptySubsequences | false の場合、isSeparator の述語 (predicate) を満たす連続要素の各ペア、および isSeparator 述語を満たすコレクションの開始または終了の各要素の結果に空の部分シーケンスが返されます。デフォルト値は true です。 |
isSeparator | 要素を引数として受け取り、コレクションをその要素で分割すべきかどうかを示すブール値を返すクロージャ。 |
戻り値
このコレクションの要素から分割された、部分シーケンスの配列。
議論
結果としての配列は、最大で maxSplits + 1 個の部分シーケンスで構成されます。シーケンスの分割に使用される要素は、いかなる部分シーケンスの一部としても返されません。
以下の例は、空白に一致するクロージャを使用して文字列を分割するときの maxSplits パラメータと exceptEmptySubsequences パラメータの効果を示しています。split を最初に使用すると、元は 1 つ以上の空白で区切られていた各単語が返されます。
let line = "BLANCHE: I don't want realism. I want magic!"
print(line.split(whereSeparator: { $0 == " " }))
// Prints "["BLANCHE:", "I", "don\'t", "want", "realism.", "I", "want", "magic!"]"
2 番目の例は、maxSplits パラメータに 1 を渡しているため、元の文字列は 1 回だけ分割され、2 つの新しい文字列になります。
print(line.split(maxSplits: 1, whereSeparator: { $0 == " " }))
// Prints "["BLANCHE:", " I don\'t want realism. I want magic!"]"
最後の例は、omittingEmptySubsequences パラメータに false を渡しているため、返される配列には、元空白が繰り返されていた所に空の文字列が含まれます。
print(line.split(omittingEmptySubsequences: false, whereSeparator: { $0 == " " }))
// Prints "["BLANCHE:", "", "", "I", "don\'t", "want", "realism.", "I", "want", "magic!"]"
複雑さ:O(n)、ここで n はコレクションの長さです。
以下も見よ
辞書の要素の変換
func reversed() -> [(key: Key, value: Value)]
このシーケンスの要素を逆の順に含む配列を返します。
func withContiguousStorageIfAvailable<R>((UnsafeBufferPointer<(key: Key, value: Value)>) -> R) -> R?
body(p) を呼び出します。ここで p はコレクションの連続した記憶領域へのポインタです。そのような記憶領域が存在しない場合は、最初に作成されます。コレクションが連続した記憶領域形式の内部表現をサポートしていない場合、 body は呼び出されず、nil が返されます。