たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

【C#】文字列を整数値に変換する方法(int.Parse / int.TrayParse)

AtCoderなどの問題で、標準入力から受けた文字列Sを整数に変換するとき、普段は int.Parse(S); で変換しているのですが、そもそもエラー処理として変換できない場合はどのように処理するの調べてみました。

はじめに

文字列を整数に変換するとは

今回は標準入力で文字列が与えられ、その文字列が整数値を表していると前提を置きます。

例えば、下記の記述により受け取った文字列が "671" のように整数値を表しているケースです。このように整数を表していたとしても、型は string のため計算には使用できません

string S = Console.ReadLine();

ここで、下記を使用することにより整数型に変更することで計算に使用できます。

int x = int.Parse(S);

本題

そもそも整数型に変換できない場合はどうするの?

例えば、"100" の時は整数型に変換できますが、 "1a0"といった場合は整数型に変更できません。そのためエラー処理について考える必要があります。

変換可否は下記の記述で処理できます。Sには変換する文字列、x には変換できた場合の変換後の整数を格納します。

if (int.TryParse(S, out x)) 

返り値はbool型なので、if文で直接処理できます。たとえば、文字列が与えられて変換できるならAという処理、できないならBという処理のようエラー処理にて使用できると思います。