Swiftで文字列の長さをチェックするのにlengthを使ってみよう

19/03/10 13:41:02     19/04/08 09:24:58

Swiftは仕様変更の多い言語ですが、文字列の長さを調べるコードも仕様変更が行われています。そのため、情報によっては古い文字列の長さ取得のコードが書かれていて混乱するかもしれません。

新しくなった仕様の方だけ覚えておけば良いかもしれませんが、古いコードを読む可能性もあるので一応両方とも知っておいた方が良いでしょう。

Swift2とSwift3での文字列の長さ取得

Swift4以降は使用が変更されましたが、以前はcharacters.countというコードで文字列の長さを取得していました。具体的には、String型の変数に対して以下のように使用します。

str.characters.count

詳細は割愛しますがメモリの使い方としても非効率で、コードとしてもパッと見冗長です。他のプログラミング言語経験のある方なら、ドットが二つも入るなんて面倒だな、と思われるかもしれません。

Swift4以降の文字列の長さ取得

以前までの文字列の長さ取得のコードは冗長だったため、以下のように改良されました。

// Swift 3 では
"Hello World".characters.count

// Swift 4 では
"Hello World".length

シンプルでわかりやすくなっています。他のプログラミング言語でもだいたいString型にlengthメソッドが用意されているので、他の言語と同じように簡単に文字列を取得できます。

また、以下のように記述することも可能です。

"Hello World".count

その他の文字列操作

Swiftでの文字列の長さ取得は以上のようにシンプルです。すぐに把握できるかと思います。そこでせっかくなので、その他の文字列操作についても紹介しておきます。

大文字と小文字の変換

プログラミングではアルファベットを扱うことが多いかと思いますが、簡単に大文字と小文字を変換することができます。サンプルコードは以下です。

let lowerString = "ABCDEFG".lowercased() // abcdefgに変換される
let upperString = "abcdefg".uppercased() // ABCDEFGに変換される

小文字に変換する際にはlowercased()メソッドを使用し、大文字に変換する際にはuppercased()メソッドを使用します。

ひらがなとカタカナの変換

アルファベット同様に、ひらがなとカタカナの変換もできます。サンプルコードは以下です。

// あいうえお→アイウエオに変換
var hiragana = "あいうえお".applyingTransform(.hiraganaToKatakana, reverse: false)
// アイウエオ→あいうえおに変換
var katakana = "アイウエオ".applyingTransform(.hiraganaToKatakana, reverse: true)

ひらがなからカタカナに変換する際にはapplyingTransformメソッドを使用し、第一引数にhiraganaToKatakana、第二引数にreverse: falseを指定します。

逆にカタカナからひらがなに変換する際には同じくapplyingTransformメソッドを使用し、第一引数も同様にhiraganaToKatakana、第二引数がreverse:trueになります。

はっきり言ってしまうと少しわかりにくいです。第一引数は直感的にわかりやすく日本語をそのままアルファベットにした記述ですが、なぜかカタカナからひらがなに変換するにもhiraganaToKatakanaとなっています。

そして、hiraganaToKatakanaに対して第二引数がreverse: trueだとリバースされてカタカナからひらがなに変換されます。第一引数の文言をリバースするかどうかでtrueとfalseが設定されているため、正直混乱しそうな感じがします。

第一引数のhiraganaToKatakanaがtrueかfalseかではなく、hiraganaToKatakanaをreverseするかどうかをtrueかfalseで判定します。reverseする場合はtrue、reverseしない場合はfalseとなります。

文字列の取得

他のプログラミング言語にも用意されている機能ですが、Swiftでも文字列を取得することができます。指定した文字数分取得するコードは以下です。

let moji = "ABCDEFG"
let prefixMoji = moji.prefix(3) // 先頭3文字の「ABC」
let suffixMoji = moji.suffix(2) // 末尾2文字の「FG」

それぞれ、先頭からの文字数と後ろからの文字数を指定して取得するメソッドです。しかし、先頭と末尾ではなく中間部分から文字列を取得したい場合もあるでしょう。そんなときに使えるメソッドのサンプルコードは以下です。

let moji = "ABCDEFG"
let partString = moji[moji.index(moji.startIndex, offsetBy: 1)..<moji.index(moji.startIndex, offsetBy: 6)] // BCDEF

上記のサンプルコードでは2文字目から6文字目までの5文字を取得しています。

文字列を分割する

任意の分割文字を指定して、文字列を分割することが可能です。具体的には以下のサンプルコードのようになります。

let moji1 = "ABC,DEF,GHI"
let array1 = moji1.components(separatedBy: ",") // ,で分割する

let moji2 = "ABC;DEF;GHI"
let array2 = moji1.components(separatedBy: ";") // ;で分割する

let moji3 = "ABC\nDEF\nGHI"
let array3 = moji2.components(separatedBy: .newlines) // 改行コードで分割する

文字列を置き換える

replaceSubrangeメソッドを使用して文字列を置き換えることが可能です。以下はサンプルコードになります。

var moji = "赤い鳥"
if let range = moji.range(of: "赤い") {
    moji.replaceSubrange(range, with: "青い")
    print(moji) // 青い鳥
}

replaceSubrangeメソッドの第一引数には置き換える範囲文字を指定し、第二引数には置換後の文字列を指定します。

まとめ

以上、Swiftの文字列の長さチェックやその他の文字列操作について紹介してきました。

文字列の長さチェックを含め、基本的に文字列の操作はメソッドを使用するだけです。Swiftだけではありませんが、文字列を操作するためのメソッドは数多く用意されており、そのまま使用すればだいたいのことがうまくいきます。

またメソッドの種類や用法についてもざっくりと把握しておけば問題ありません。細かいコードは実装するときに再度調べれば良いので、結局のところ文字列の操作は難しくありません。

今回紹介した以外にも文字列を操作するメソッドはありますが、文字列操作の大まかな方法を把握していただければ良いかと思います。

案件量が豊富なアルマサーチ

アルマサーチ

最後に、アルマサーチのご紹介!

アルマサーチはフリーランス向けに案件をご紹介することに特化したエージェントサービスです。豊富な案件量から、安定して継続的な案件のご紹介を実現しており、口コミから登録エンジニアが急増中です。

アルマサーチが選ばれる理由

  1. 豊富な案件量。週3〜4日の案件や在宅リモート案件も。
  2. 優秀なコンサルタント陣。
  3. 案件に参画後もしっかりサポート。

豊富な案件量

フリーランス向けに特化し、業界屈指の案件量を誇ります!週3〜4日の案件や、在宅リモート案件もありますし、その他あらゆる希望をしっかりお伝えください。最適な案件のご紹介をさせていただきます。

優秀なコンサルタント陣

技術に疎く、開発の希望を伝えても響かないエージェント・・・嫌ですよね。アルマサーチにはそのような者は一切おりません!さらに独立にまつわる税金や保険関係に詳しいスタッフが徹底的にサポートさせていただきます。

案件に参画後もしっかりサポート

常駐先が決まった瞬間に、一度も連絡が取れなくなるエージェント・・・いますよね?アルマサーチでは、そのようなことは一切ありません!常に電話やメールは即対応しますし、月に1度のランチミーティングなどから現場の状況を細かくヒアリングし、就業環境改善に尽力いたします。

相談する

▼Swift関連の記事一覧
1, 【Swiftのフリーランス案件情報付き】仕事やエンジニアの将来性・学習方法!
2, 繰り返し処理に使えるSwiftのfor文とfor-in文の便利な使い方まとめ
3, 条件分岐に便利なSwiftのSwitch文の使い方まとめ
4, アプリ開発でよく使うSwiftの4つの文法を解説します
5, Swiftのoptional型を使いこなすための7つのポイント
6, Swiftで文字列を扱うためのstring型の使い方
7, Swiftでの配列の宣言・初期化・代入・参照の方法まとめ
8, 実際の開発現場でのSwiftの変数・定数の使われ方を解説します
9, Swiftでif let文を使って出来ることとguard letの使い分けに関して
10, 開発現場でよく使うSwiftのif文の条件分岐をまとめました
11, SwiftにおけるTupleの使い方とわかりやすく解説します
12, 初心者にオススメのSwiftのサンプルコードをまとめてみました
13, SwiftのString、Int、Doubleの型の変換方法をまとめました
14, 開発現場で役に立つSwiftのクロージャの使い方
15, Swiftでwhileを使って上手に繰り返し処理を行おう
16,(この記事)Swiftで文字列の長さをチェックするのにlengthを使ってみよう
17, Swiftのdictionaryの使い方と初期化方法をまとめました
18, Swiftの値渡しと参照渡しに関するまとめ
19, Swiftで参照渡ししたい時のinoutの便利な使い方
20, Swiftでfor-in文でindexを使いたい時の方法まとめ
21, Swiftでのクラスとstruct(構造体)の使い分けを解説します

人気記事

編集部おすすめ記事

この記事を読んだ人はこんな記事を読んでいます

案件探しやフリーランスになるための相談する

最新お役立ちコンテンツ一覧