【コピペでOK】Swiftでsubstringを使わず指定の長さにする、実コードを公開!

Swift

概要


「文字列を指定の長さにしたいけど、どうやったら良いか分からない…。」
「簡単なやり方ないの?substringとかindexとか使うと処理長くなるんだけど。」
「長すぎる場合は最後を”…”とかで終わらせたい」

そんな疑問に応えるべくこの記事を書いています。

筆者環境

Xcode11.5
Apple Swift version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53)

それでは早速行ってみましょー!

Swiftでsubstringを使わず指定の長さにするtruncatedメソッドはこれでいける!

Stringのextensionとして定義してください。

func truncated(length: Int, trailing: String? = nil) -> String {
  if length <= 0 { return "" }

  if count <= length {
    return self
  }

  if let trailing = trailing {
    return "\(prefix(length - 1))\(trailing)"
  } else {
    return String(prefix(length))
  }    
}

実行結果はこちら

/// 空文字
print("".truncated(length: 0)) // ""
print("".truncated(length: 10)) // ""

/// 通常動作
print("12345".truncated(length: -1)) // ""
print("12345".truncated(length: 0))  // ""
print("12345".truncated(length: 0), trailing: "…") // ""

// 半角文字
print("123456789".truncated(length: 5)) // ""
print("123456789".truncated(length: 5, trailing: "…")) // "1234…"

// 全角文字
print("あいうえおかきくけこ".truncated(length: 5)) // "あいうえお"
print("あいうえおかきくけこ".truncated(length: 5, trailing: "…")) // "あいうえ…"

/// 文字列長とlengthが同じ
// 半角文字
print("12345".truncated(length: 5)) // "12345"
print("12345".truncated(length: 5, trailing: "…")) // "12345"

// 全角文字
print("あいうえお".truncated(length: 5)) // "あいうえお"
print("あいうえお".truncated(length: 5, trailing: "…")) // "あいうえお"

/// 文字列長がlengthより短い
// 半角文字
print("12345".truncated(length: 10)) // "12345"
print("12345".truncated(length: 10, trailing: "…")) // "12345"

// 全角文字
print("あいうえお".truncated(length: 10)) // "あいうえお"
print("あいうえお".truncated(length: 10, trailing: "…")) // "あいうえお"

誰かのお役に立てば。

Twitterフォローお願いします

「次回以降も記事を読んでみたい!」
「この辺分からなかったから質問したい!」

そんな時は、是非@daiki1003のフォローお願いします♪

コメント

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