Swiftで文字列を数値に変換する2つの方法!

Swift

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で文字列を数値に変換する方法を書きました。
記事の内容をまとめると、下記のようになります。

・Intに数値の文字列を渡すことで変換できた。
・NumberFormatterを使うことでも変換できた。
・IntやNumberFormatterを使ったとき、変換できない値のときには`nil`が返ってくる。

変換できないときにはnilが返ってくるということをおさえて、使っていきましょう。

コメント

タイトルとURLをコピーしました