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が返ってくるということをおさえて、使っていきましょう。

コメント