.NET TIPS

文字列を数値に変換するには?(TryParse編)[2.0のみ、C#、VB]

デジタルアドバンテージ 遠藤 孝信
2006/02/10

 数字からなる文字列を数値に変換するには、「TIPS:文字列を数値に変換するには?」で解説しているように、Int32型やDouble型などのParseメソッドが利用できる。

 しかしParseメソッドは、変換しようとしている文字列が正しい形式でない場合や、値がその数値型の範囲に収まっていない場合には変換に失敗し、例外を発生する。例外の発生にはコストがかかるため、変換が失敗する頻度が高いケースではアプリケーションのパフォーマンスが悪くなってしまう。

 変換時に例外が発生しないようにするためには、あらかじめ文字列が数値として有効かどうかを精査する必要があるが、.NET Framework 2.0ではそのような処理を行った後に変換を行ってくれるTryParseメソッドが新しく追加されており、従来のParseメソッドの代わりに利用できる。

例外を発生しないTryParseメソッド

 TryParseメソッドは、変換に失敗しても例外を発生しない。変換が成功した場合には戻り値としてtrueを返し、失敗した場合にはfalseを返す。

string number = "123456";
int output;
bool result = Int32.TryParse(number, out output);
Dim number As String = "123456"
Dim output As Integer
Dim result As Boolean = Int32.TryParse(number, output)
TryParseメソッドによる文字列から数値への変換例(上:C#、下:VB)

 TryParseメソッドの第1パラメータには変換する文字列を指定する。指定可能な文字列の形式は従来のParseメソッドと同一である。

 第2パラメータには変換された数値を受け取る数値型の変数を指定する(C#の場合にはoutキーワードが必須)。なお、変換に失敗した場合には、第2パラメータに指定した変数に0が代入される。

 以下に変換が失敗する場合のサンプル・プログラムを示す。

// tryparse.cs

using System;

Class TryParse {
  static void Main() {
    string num = "this is not a number";
    int i;

    try {
      i = Int32.Parse(num);
    } catch {
      Console.WriteLine("変換失敗");
    }
    // 出力:変換失敗

    try {
      i = Convert.ToInt32(num);
    } catch {
      Console.WriteLine("変換失敗");
    }
    // 出力:変換失敗

    bool result = Int32.TryParse(num, out i);
    Console.WriteLine(result); // 出力:false
    Console.WriteLine(i); // 出力:0
  }
}

// コンパイル方法:csc tryparse.cs
TryParseメソッドを使用したC#のサンプル・プログラム(tryparse.cs)

' tryparse.vb

Imports System

class TryParse
  Shared Sub Main()
    Dim num As String = "this is not a number"
    Dim i As Integer

    Try
      i = Int32.Parse(num)
    Catch
      Console.WriteLine("変換失敗")
    End Try
    ' 出力:変換失敗

    Try
      i = Convert.ToInt32(num)
    Catch
      Console.WriteLine("変換失敗")
    End Try
    ' 出力:変換失敗

    Dim result As Boolean = Int32.TryParse(num, i)
    Console.WriteLine(result) ' 出力:False
    Console.WriteLine(i) ' 出力:0
  End Sub
End Class

' コンパイル方法:vbc tryparse.vb
TryParseメソッドを使用したVBのサンプル・プログラム(tryparse.vb)

 TryParseメソッドは、Boolean型(Boolean構造体)や数値型、DateTime構造体など、Parseメソッドを持っていたすべての基本的な型に追加されている(DateTime構造体には、従来のParseExactメソッドに対応するTryParseExactメソッドも追加されている。ParseExactメソッドについては「TIPS:日付や時刻の文字列をDateTimeオブジェクトに変換するには?」を参照していただきたい)。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Int32構造体(System名前空間)
関連TIPS:文字列を数値に変換するには?
関連TIPS:日付や時刻の文字列をDateTimeオブジェクトに変換するには?

この記事と関連性の高い別の.NET TIPS
文字列を数値に変換するには?[C#、VB]
日付や時刻の文字列をDateTimeオブジェクトに変換するには?
文字と文字列を変換するには?
バイト列と数値を変換するには?
整数や文字列を列挙体に変換するには?[C#/VB]
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH