[Swift]文字列を文字数で分割するには?

Swift

どうも、ちょげ(@chogetarou)です。

Swiftで文字列を文字数で分割する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

文字列を文字数で分割するには、関数を自作します。

まず、文字数を引数に持ち、戻り値を文字列の配列とする関数を追加します。

extension String {
    func split(by length: Int) -> [String] {
        
    }
}

次に、関数に文字列を文字数ごとに切り取って、それを配列に追加し、配列を戻り値として返すコードを追加します

extension String {
    func split(by length: Int) -> [String] {

        var startIndex = self.startIndex
        var results = [Substring]()
        
        while startIndex < self.endIndex {
            let endIndex = self.index(startIndex, offsetBy: length, limitedBy: self.endIndex) ?? self.endIndex
            results.append(self[startIndex..<endIndex])
            startIndex = endIndex
        }
        
        return results.map { String($0) }
    }
}

最後に、自作した関数を呼び出します。

str.split(by: length)

使用例

以下は、使用例です。

extension String {
    func split(by length: Int) -> [String] {
        var startIndex = self.startIndex
        var results = [Substring]()
        
        while startIndex < self.endIndex {
            let endIndex = self.index(startIndex, offsetBy: length, limitedBy: self.endIndex) ?? self.endIndex
            results.append(self[startIndex..<endIndex])
            startIndex = endIndex
        }
        
        return results.map { String($0) }
    }
}


let str = "ABCDEFGHIJKLMN"

//3文字ごとに分割
print(str.split(by: 3)) //["ABC", "DEF", "GHI", "JKL", "MN"]

コメント

タイトルとURLをコピーしました