Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
文字列.count / isEmpty / 文字列リテラル
Swiftの文字列は『String』型で、Unicode完全対応です。『count』で文字数を取得し、文字列補間(『\()』)で変数を埋め込めます。複数行リテラル(『"""』)も使えます。
構文
// 文字列の宣言
let str = "テキスト"
var mutable = "変更可能"
// 文字列補間
let message = "値は \(変数) です"
// 複数行文字列リテラル
let multiline = """
1行目
2行目
3行目
"""
// 文字数取得
str.count
// 空文字チェック
str.isEmpty
メソッド・プロパティ一覧
| メソッド / プロパティ | 概要 |
|---|---|
| 文字列.count | 文字列の文字数(Unicode文字単位)を返します。 |
| 文字列.isEmpty | 文字列が空(count == 0)かどうかをBoolで返します。 |
| \(変数) | 文字列補間で変数・式の値を文字列に埋め込みます。 |
| """...""" | 複数行の文字列リテラルを記述します。 |
| 文字列.utf8.count | UTF-8バイト数を返します(countとは異なる場合があります)。 |
| 文字列.unicodeScalars.count | Unicodeスカラー値の数を返します。 |
| 文字列 + 文字列 | 文字列を結合します。 |
| 文字列 += 文字列 | 文字列に追記します(varのみ)。 |
サンプルコード
// 文字列の基本
let greeting = "こんにちは"
print(greeting.count) // 5
print(greeting.isEmpty) // false
let empty = ""
print(empty.isEmpty) // true
// 文字列補間
let name = "太郎"
let age = 25
let intro = "\(name) は \(age) 歳です。来年は \(age + 1) 歳になります。"
print(intro)
// 複数行文字列リテラル
let poem = """
春はあけぼの
夏は夜
秋は夕暮れ
冬はつとめて
"""
print(poem)
// 文字列の結合
var message = "Hello"
message += ", World"
message = message + "!"
print(message) // Hello, World!
// Unicodeと文字数の違い
let emoji = "👨👩👧👦" // 家族絵文字(1文字扱い)
print(emoji.count) // 1
print(emoji.utf8.count) // バイト数(絵文字は複数バイト)
// 文字数チェックの実践例
func validateUsername(_ username: String) -> Bool {
return !username.isEmpty && username.count <= 20
}
print(validateUsername("太郎")) // true
print(validateUsername("")) // false
概要
Swiftの『String.count』はUnicode拡張書記素クラスタ単位で文字数を数えます。そのため絵文字(👨👩👧👦)や結合文字(é = e + ´)も1文字として数えられます。
『isEmpty』は『count == 0』より効率的です。バイト数が必要な場合は『utf8.count』を、Unicodeスカラー数が必要な場合は『unicodeScalars.count』を使ってください。多言語対応アプリでは常に『count』(書記素クラスタ)を使うことを推奨します。
文字列の検索・判定については文字列.hasPrefix() / hasSuffix() / contains()を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。