【Swift】文字列型と文字列の型変換

文字列の型名はString型。
書き方は文字列として扱いたい値をダブルクォーテーション(“”)で囲みます。
データ型の記事で軽く触れてますが、今回は少し深掘って書いていこうと思います。文字列の結合-演算子(+)を使ってString型の値を結合することが出来ます。

前回は 数値型の演算 について記事を書きました。

今回は 文字列型と文字列の型変換 について書いていこうと思います。

文字列型とは

文字列の型名は String型
書き方は文字列として扱いたい値をダブルクォーテーション で囲みます。
データ型 の記事で軽く触れてますが、今回は少し深掘って書いていこうと思います。

String型の宣言例

var greeting:String = "Hello." //値をダブルクォーテーションで囲む
var gereting2 = "Swift!" //型推論

print(greeting) //Hello.
print(greeting2) //Swift!

型推論 についてはこちらの記事で紹介しています。

文字列の結合

算術演算子 + を使って String型 の値を結合することが出来ます。

算術演算子 についてはこちらの記事で紹介しています。

文字列の結合例

var greeting:String = "Hello."
var greeting2 = "Swift!"

print(greeting) //Hello.
print(greeting2) //Swift!

var greeting3 = greeting + greeting2 //+で結合
print(greeting3) //Hello.Swift!

//または
var name = "hoge"
var message = "こんにちは" + name + "です"
print(message) //こんにちはhogeです

文字列と文字列を結合することが出来たと思います。

エスケープシーケンス

上記の結合方法の他に、エスケープシーケンスを使って文字列の中に変数や定数を埋め込む事も出来ます。埋め込みたい箇所に \( ) と入力して、 ( ) の中に変数や定数を入れる事で埋め込む事が出来ます。

バックスラッシュは Optionキー を押しながら ¥マーク。(Mac)

var name = "hoge"
var message = "こんにちは" + name + "です"
print(message) //こんにちはhogeです

//エスケープシーケンスを使って変数を埋め込む
var message2 = "こんにちは\(name)です" //埋め込みたい箇所に\()を入力して()の中に変数や定数を入れます
print(message2) //こんにちはhogeです

この方法でもプラス演算子 + を使った結合と結果は同じになります。

特殊文字をエスケープする

例えばダブルクォーテーションやバックスラッシュを で囲うとエラーになります
ダブルクォーテーションやバックスラッシュなど特殊文字と言われる文字を文字列として扱いたい時や、改行したい時などはエスケープする事で出力することが出来ます。

バックスラッシュはOptionキーを押しながら¥マーク。(Mac)
特殊文字エスケープシーケンス
ダブルクォーテーション\”
シングルクォーテーション\’
バックスラッシュ\\
タブ文字\t
改行\n

エスケープシーケンスはこの他にもたくさんあります。

エスケープ例

print("123\"45") //123"45 (ダブルクォーテーション)
print("123\'45") //123'45 (シングルクォーテーション)
print("123\\45") //123\45 (バックスラッシュ)
print("123\t45") //123 45 (タブ文字)
print("123\n45") //123    (改行)
                 //45

文字列の型変換

String型Int型Float Double型 に変換する事が出来ます。また、逆に Int Float Double型String型 に変換することが出来ます。
型変換することをキャストとも言います。

型名() と書いて、( ) の中に変換したい変数や定数を入れると変換する事ができます。

文字列型から数値型へキャスト

String型 の変数を他の型にキャストする例

var a = "12345"
print(type(of: a)) //String

//StringをIntにキャスト
var b = Int(a) 
print(type(of: b)) //optional<Int>

//StringをFloatにキャスト
var c = Float(a)
print(type(of: c)) //Optional<Float>

//StringをDoubleにキャスト
var d = Double(a)
print(type(of: d)) //Optional<Double>

これで String型 を数値型に変換できましたが、実行結果を見てみると頭の所に optional と付いています。この optional と言うのは、変換しようとしている値は nil(空) の可能性がある場合に optional となります。
nil とは、値が入っていない空の状態を表しています。
nil じゃないよ!と明示するには、 アンラップ をする事で出来ますが、 optional型 や、アンラップ についてはまた今度記事を書こうと思います。とりあえずキャストは出来るので今回はこのまま進めます。

数値型から文字列型へキャスト

さっきの逆パターン

//IntをStringにキャスト
var e = 12345
print(type(of: e)) //Int
var f = String(e)
print(type(of: f)) //String

//DoubleをStringにキャスト
var g = 12.345
print(type(of: g)) //Double
var h = String(g)
print(type(of: h)) //String

これでキャスト出来たと思います。

String-escapeコードimg2

キャストする時の注意点

変換できなかった場合は nil が返される。
nil とは、値が入っていない空の状態を表しています。

nil が返される( 変換出来ない )例

var a = "123.45" //String
var b = Int(a)
print(b) //nil
print(type(of: b)) //Optional<Int>

これは、 String型 の変数を Int型 にキャストしようとしている例です。文字列に “123.45” と少数点が入っています。 Int型 は少数を扱えないのに Int型 にキャストしようとしているので、結果 nil が返されてしまいます。
文字列に小数点が含まれた値をキャストしたい場合は、 Float型 か、Double型 を指定しましょう。

var a = "123.45" //String
var b = Int(a)
print(b) //nil
print(type(of: b)) //Optional<Int>

//少数を扱えるFloat型にキャスト
var c = Float(a)
print(c) //Optional(123.45)
print(type(of: c)) //Optional<Float>

//数字の文字列じゃない場合、数値型に変換出来ず値はnilになります
var d = "abc"
var e = Int(d)
print(e) //nil
print(type(of: e)) //Optional<Int>
String-escapeコードimg

以上 文字列型と文字列の型変換 についてでした。

次回は 真理値型と比較演算子 について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/

【Swift】データ型

データ型とは、Swiftに限らずプログラムで使う全てのデータには型というものがあり、変数や定数などを宣言する時にそのデータはどの型に分類されるのかを宣言するためのものです。

前回は 変数・定数 について書きました。

今回は データ型 について書いていこうと思います。

データ型とは

データ型とは、Swift に限らずプログラムで使う全てのデータには『型』というものがあり、変数や定数などを宣言する時にそのデータはどの型に分類されるのかを宣言するためのものです。今回はよく使う代表的な型をいくつか書いていきたいと思います。

データ型の種類

型名和訳
String文字列型var a:String = “hoge”
Int整数型var a:Int = 1
Float
Double
浮動小数点型var a:Float = 3.14
var a:Double = 3.14
Bool真偽値型var a:Bool = true

細かく分類すればもっとありますが、よく使う代表的な型はこのあたりかなと思います。
Int Float Double は、数値型とも言われます。

型推論とtype(of:)関数

型推論とは

型推論とは型を明示しないで宣言した場合、入れた値によって型が予測されて自動的に決められる機能です。前回の記事、変数・定数で書いている変数や定数はこの型推論によって自動的に型が決められています。

type(of:)関数 とは

type(of:)関数 の引数に変数や定数などを入れて実行すると、何型かを返してくれる関数です。

型を明示した宣言例と型推論を用いた宣言例

変数、定数名の後ろにコロン : を入力してから型名を入力して、その型に合った値を代入します。

変数、定数名:型名 = 値

//型推論
変数、定数名 = 値
print(type(of:変数や定数))

print関数 の引数に type(of: 変数名や定数名 ) とすると Xcode のコンソールに何型か出力されるので、調べたい時などによく使ってます。

String型

var a:String = "hoge" //文字列

//型推論
var a = "hoge"
print(type(of: a)) //String型

※ 文字列は、ダブルクォーテーション で文字列を括ります。

Int型

var b:Int = 1 //整数

//型推論
var b = 1
print(type(of: b)) //Int型

Float型 Double型

var c:Double = 3.14 //浮動小数点
print(type(of: c)) //Double型

//型推論
//少数の型推論はデフォルトでDouble型に推論するので、Float型にしたい場合は明示が必要.
var d = 3.14 
print(type(of: d)) //Double型

var e:Float = 3.14 //Float型は明示しないとDouble型になる。
print(type(of: e)) //Float型

FloatDouble はどちらも浮動小数点型ではあるものの、桁の精度が違います。
Float6 桁Double15 桁の精度ですが基本的には Float で問題ないかと思います。桁が多くて計算ズレる!みたいな時に Double に代えればいいです。

Bool型

//Bool型はtrueかfalseの2種類
var f:Bool = true //真偽値

//型推論
var g = true //Bool型
var h = false //Bool型

Bool型 は on/off の切り替えだったり、条件分岐する時などによく使われます。

以上 データ型 についてでした。

次回は 数値型 の演算について書いていこうと思います。

実行環境

version
Xcode 14.2 (14C18)
Swift 5.2.4

公式ドキュメント

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/