Swiftで文字列を数値に変換する方法について書いています。
Intを使うことで、文字列から数値に変換することが可能です。
サンプルコードは、Swiftバージョン5.7で検証しています。
Intで変換する
Intを使うことで、文字列から数値に変換できます。
例えば、下記のように数値の文字列をIntに渡すことで、数値に変換できます。
let numberText = "100"
let number = Int(numberText)
print(number) // Optional(100)
print(number is Int) // true
numberText
という変数に文字列の「100
」を代入しています。
次の行で、Intに対してnumberText
変数を渡しています。
これで数値に変換されます。
printで出力すると、数値の「100」が出力されました。
「number is Int
」として、型を確認するとtrue
が返ってきました。
数値(Int
)になっていることが確認できました。
Intで変換できない値のときは?
Intで変換できない値の場合にはnil
が返ってきます。
例えば、下記のような変換できない文字列のときです。
let numberText = "hello"
let number = Int(numberText)
print(number) // nil
print(number is Int) // false
print(number == nil) // true
numberText
変数に文字列の「hello
」を代入しました。
次の行で変換しようとしていますが、numberText
変数は変換できない文字列です。
そのため、number
変数には「nil
」が返ってきます。
printで出力すると「nil
」が返ってきていることが確認できました。
また「number == nil
」でtrue
が返ってきていますね。
変換不可のパターン
文字列から数値に変換ができないパターンです。
下記のような値のときには、文字列から数値に変換することができません。
print(Int(" 100 ")) // nil
print(Int(" 100")) // nil
print(Int("100 ")) // nil
print(Int("100.0")) // nil
print(Int("1,980")) // nil
print(Int("0.1")) // nil
6つのパターンを試しましたが、全てnil
が返ってきました。
・前に空白(スペース)が入っている
・後ろに空白(スペース)が入っている
・小数部まで表記されている
・金額などのカンマ表示
・小数のみを入力
変換できそうだなと思った、空白が前後に入っているパターンや、小数が入っているときにも変換できずにnil
になりました。
NumberFormatterを使って変換する
NumberFormatterを使うことでも、文字列から数値に変換できます。
例えば、下記のように使って、文字列から数値に変換できます。
let numberFormatter = NumberFormatter()
let number = numberFormatter.number(from: "117")?.intValue
print(number) // Optional(117)
print(number is Int) // true
最初にNumberFormatterを使って、numberFormatter
変数にオブジェクトを作っています。
次の行で、numberFormatter
からnumberメソッドを呼び出して、数値文字列を渡すことで変換できます。
number
変数で結果を受け取っています。
出力すると「117」になっていて、「number is Int
」ではtrue
が返ってきました。
NumberFormatterで変換できないときは?
NumberFormatterでnumberメソッドを呼び出して、変換できないときにはこちらでもnil
が返ってきます。
let numberFormatter = NumberFormatter()
let number = numberFormatter.number(from: "hello")?.intValue
print(number) // nil
print(number is Int) // false
print(number == nil) // true
同様にして、numberFormatter
変数にオブジェクトを最初に作りました。
次の処理で、「hello
」という文字列を渡しましたが、変換できないためnil
が返ってきます。
number
変数で受け取った結果を出力すると、nil
が入っています。
「number == nil
」で確認すると、nil
なのでtrue
が返ってきます。
Swiftで文字列を数値に変換する方法まとめ
今回はSwiftで文字列を数値に変換する方法を書きました。
記事の内容をまとめると、下記のようになります。
・NumberFormatterを使うことでも変換できた。
・IntやNumberFormatterを使ったとき、変換できない値のときには`nil`が返ってくる。
変換できないときにはnil
が返ってくるということをおさえて、使っていきましょう。
コメント