前回は 数値型の演算 について記事を書きました。
今回は 文字列型と文字列の型変換 について書いていこうと思います。
文字列型とは
文字列の型名は 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です
この方法でもプラス演算子 + を使った結合と結果は同じになります。
特殊文字をエスケープする
例えばダブルクォーテーションやバックスラッシュを “ で囲うとエラーになります。
ダブルクォーテーションやバックスラッシュなど特殊文字と言われる文字を文字列として扱いたい時や、改行したい時などはエスケープする事で出力することが出来ます。
特殊文字 | エスケープシーケンス |
---|---|
ダブルクォーテーション | \” |
シングルクォーテーション | \’ |
バックスラッシュ | \\ |
タブ文字 | \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
これでキャスト出来たと思います。
キャストする時の注意点
変換できなかった場合は 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>
以上 文字列型と文字列の型変換 についてでした。
次回は 真理値型と比較演算子 について書いていこうと思います。
実行環境
version |
---|
Xcode 14.2 (14C18) |
Swift 5.2.4 |
公式ドキュメント
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/