LoginSignup
11
6

More than 5 years have passed since last update.

Swift:文字列を一定の文字数ごとに分割した配列にして取得する

Last updated at Posted at 2018-01-12

背景

Swift4になって文字列の操作がかなり簡単になりましたが、いまだに文字列を一定の文字数ごとに分割した配列として取得するメソッドが用意されていません。
そこで、Stringextensionを作ってみたので記しておきます。

ソースコード

import Foundation

extension String {
    func splitInto(_ length: Int) -> [String] {
        var str = self
        for i in 0 ..< (str.count - 1) / max(length, 1) {
            str.insert(",", at: str.index(str.startIndex, offsetBy: (i + 1) * max(length, 1) + i))
        }
        return str.components(separatedBy: ",")
    }
}

用例

let str = "abcdefghijklmnopqrstuvwxyz"
let array = str.splitInto(3)
print(array)
// >> ["abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "yz"]

余談

いくつか同様のことを実装している文献を見つけましたが、提案手法はその中でもかなり短くまとまっていると思います。
また、SubStringCharacterの配列で取得するよりもStringの配列で取得できた方が使い勝手が良いと思うのでアレンジしてみました。

11
6
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
6