概要
「文字列を指定の長さにしたいけど、どうやったら良いか分からない…。」
「簡単なやり方ないの?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フォローお願いします
「次回以降も記事を読んでみたい!」「この辺分からなかったから質問したい!」
そんな時は、是非Twitter (@daiki1003)やInstagram (@ashdik_flutter)のフォローお願いします♪
Twitterコミュニティ参加お願いします
Twitterコミュニティ「Flutter lovers」を開設しました!参加お待ちしております😁
☕️ Buy me a coffee
また、記事がとても役に立ったと思う人はコーヒーを奢っていただけると非常に嬉しいです!
コメント