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

» 2006年02月10日 05時00分 公開
[遠藤孝信デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 数字からなる文字列を数値に変換するには、「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.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.vbのダウンロード

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

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

「.NET TIPS」のインデックス

.NET TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。