エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Single.Parse メソッド (String, NumberStyles, IFormatProvider)

2013/12/12

指定したスタイルおよびカルチャに固有の書式による数値の文字列形式を、それと等価な単精度浮動小数点数に変換します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public static float Parse(
	string s,
	NumberStyles style,
	IFormatProvider provider
)

パラメーター

s
型: System.String
変換する数値を含んだ文字列。
style
型: System.Globalization.NumberStyles
s に許可されている書式を示す列挙値のビットごとの組み合わせ。通常指定する値は、NumberStyles.AllowThousands と組み合わせた NumberStyles.Float です。
provider
型: System.IFormatProvider
s に関するカルチャ固有の書式情報を提供するオブジェクト。

戻り値

型: System.Single
s で指定した数値または記号と等価の単精度浮動小数点数。

例外条件
ArgumentNullException

snull です。

FormatException

s が数値を表していません。

ArgumentException

styleNumberStyles 値ではありません。

または

styleAllowHexSpecifier 値です。

OverflowException

sMinValue 未満の数値か、MaxValue を超える数値を表しています。

style パラメーターは、解析操作を成功させるために s パラメーターで使用できるスタイル要素 (空白文字、桁区切り記号、通貨記号など) を定義します。このパラメーターは、NumberStyles 列挙体からのビット フラグの組み合わせである必要があります。次の NumberStyles メンバーはサポートされていません。

s パラメーターには、provider で指定されるカルチャの NumberFormatInfo.PositiveInfinitySymbolNumberFormatInfo.NegativeInfinitySymbol、または NumberFormatInfo.NaNSymbol を格納できます。style の値に応じて、次の形式も使用できます。

[ws] [$] [sign][integral-digits,]integral-digits[.[fractional-digits]][E[sign]exponential-digits][ws]

角かっこ ([および]) で囲まれている要素は省略可能です。各要素について次の表で説明します。

要素

説明

ws

一連の空白文字。styleNumberStyles.AllowLeadingWhite フラグが含まれる場合、s の先頭に空白文字を使用できます。styleNumberStyles.AllowTrailingWhite フラグが含まれる場合、s の末尾に空白文字を使用できます。

$

カルチャに固有の通貨記号。文字列内でのその位置は、現在のカルチャの NumberFormatInfo.CurrencyNegativePattern プロパティおよび NumberFormatInfo.CurrencyPositivePattern プロパティで定義されます。styleNumberStyles.AllowCurrencySymbol フラグが含まれる場合は、現在のカルチャの通貨記号を s で使用できます。

sign

マイナス記号 (-) またはプラス記号 (+)。styleNumberStyles.AllowLeadingSign フラグが含まれる場合、s の先頭に符号を使用できます。styleNumberStyles.AllowTrailingSign フラグが含まれる場合、s の末尾に符号を使用できます。styleNumberStyles.AllowParentheses フラグを含む場合は、s でかっこを使用して負の値を示すことができます。

integral-digits

数値の整数部分を指定する 0 ~ 9 の範囲の一連の数字。文字列に integral-digits 要素が含まれる場合は、fractional-digits 要素はなくてもかまいません。

,

カルチャ固有のグループ区切り。styleNumberStyles.AllowThousands フラグが含まれる場合は、現在のカルチャのグループ区切り記号を s の中で使用できます。

.

カルチャに固有の小数点記号。styleNumberStyles.AllowDecimalPoint フラグが含まれる場合は、現在のカルチャの小数点記号を s の中で使用できます。

fractional-digits

数値の小数部分を指定する 0 ~ 9 の範囲の一連の数字。styleNumberStyles.AllowDecimalPoint フラグが含まれる場合、s の中で小数の桁を使用できます。

E

値が指数表記で表されることを示す文字 "e" または "E"。styleNumberStyles.AllowExponent フラグが含まれる場合、s パラメーターでは指数表記で値を表すことができます。

exponential-digits

指数部を指定する 0 ~ 9 の範囲の一連の数字。

数字のみを含む文字列 (NumberStyles.None スタイルに対応します) は、常に解析が成功します。System.Globalization.NumberStyles のそれ以外のメンバーは、この入力文字列で使用できるが必須ではない要素を制御します。次の表では、s で使用できる要素に対する各 NumberStyles フラグの影響を示します。

NumberStyles の値

s で使用できる数字以外の要素

None

integral-digits 要素のみ。

AllowDecimalPoint

小数点 (.) および fractional-digits 要素。

AllowExponent

文字 "e" または "E"。指数表記であることを示します。このフラグ自体は、digitsEdigits の形式の値をサポートします。正または負の符号や小数点記号などの要素を含む文字列を正しく解析するには、他のフラグが必要です。

AllowLeadingWhite

s の先頭の ws 要素。

AllowTrailingWhite

s の末尾の ws 要素。

AllowLeadingSign

s の先頭の sign 要素。

AllowTrailingSign

s の末尾の sign 要素。

AllowParentheses

数値を囲むかっこの形式での sign 要素。

AllowThousands

桁区切り (,) 要素。

AllowCurrencySymbol

通貨 ($) 要素。

Currency

すべての要素。ただし、s では、16 進数または指数表記の数字を表すことはできません。

Float

s の先頭または末尾の ws 要素、s の先頭の sign、および小数点 (.) 記号。s パラメーターでは指数表記も使用できます。

Number

wssign、桁区切り記号 (,)、および小数点記号 (.) の各要素。

Any

すべての要素。ただし、s は 16 進数を表すことはできません。

provider パラメーターは IFormatProvider の実装です。その GetFormat メソッドは、value の書式に関するカルチャ固有の情報を提供する NumberFormatInfo オブジェクトを返します。通常、provider には次のいずれかを使用できます。

  • 数値書式情報を提供するカルチャを表す CultureInfo オブジェクト。その GetFormat メソッドは、数値書式情報を提供する NumberFormatInfo オブジェクトを返します。

  • 書式情報を提供する NumberFormatInfo オブジェクト。対応する GetFormat の実装では、単にそれ自身が返されます。

  • IFormatProvider を実装し、GetFormat メソッドを使用して、書式情報を提供する NumberFormatInfo オブジェクトをインスタンス化して返すカスタム オブジェクト。

providernull の場合は、現在のカルチャの NumberFormatInfo オブジェクトが使用されます。

解析操作中に s パラメーターで区切り記号が検出され、適用可能な通貨または数値の桁区切り記号とグループ区切り記号が同じ場合、解析操作では、区切り記号がグループ区切り記号ではなく桁区切り記号であると見なされます。区切り記号の詳細については、「CurrencyDecimalSeparator」、「NumberDecimalSeparator」、「CurrencyGroupSeparator」、および「NumberGroupSeparator」を参照してください。

Parse(String, NumberStyles, IFormatProvider) メソッドを使用して文字列形式の Single 値を解析するコード例を次に示します。配列の各文字列は、en-US、nl-NL、およびカスタム カルチャの書式指定規則を使用して解析されます。このカスタム カルチャでは、桁区切り記号をアンダースコア ("_") と定義し、桁のサイズを 2 と定義しています。


using System;
using System.Globalization;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Define an array of string values.
      string[] values = { " 987.654E-2", " 987,654E-2",  "(98765,43210)", 
                          "9,876,543.210", "9.876.543,210",  "98_76_54_32,19" };
      // Create a custom culture based on the invariant culture.
      CultureInfo ci = new CultureInfo("");
      ci.NumberFormat.NumberGroupSizes = new int[] { 2 };
      ci.NumberFormat.NumberGroupSeparator = "_";

      // Define an array of format providers.
      CultureInfo[] providers = { new CultureInfo("en-US"),
                                  new CultureInfo("nl-NL"), ci };

      // Define an array of styles.
      NumberStyles[] styles = { NumberStyles.Currency, NumberStyles.Float };

      // Iterate the array of format providers.
      foreach (CultureInfo provider in providers)
      {
         outputBlock.Text += String.Format("Parsing using the {0} culture:",
                           provider.Name == String.Empty ? "Invariant" : provider.Name) + "\n";
         // Parse each element in the array of string values.
         foreach (string value in values)
         {
            foreach (NumberStyles style in styles)
            {
               try
               {
                  float number = Single.Parse(value, style, provider);
                  outputBlock.Text += String.Format("   {0} ({1}) -> {2}",
                                    value, style, number) + "\n";
               }
               catch (FormatException)
               {
                  outputBlock.Text += String.Format("   '{0}' is invalid using {1}.", value, style) + "\n";
               }
               catch (OverflowException)
               {
                  outputBlock.Text += String.Format("   '{0}' is out of the range of a Single.", value) + "\n";
               }
            }
         }
         outputBlock.Text += "\n";
      }
   }
}
// The example displays the following output:
//       Parsing using the en-US culture:
//       The format of // 987.654E-2// is invalid.
//       The format of // 987,654E-2// is invalid.
//       (98765,43210) (Currency) -> -9.876543E+09
//       9,876,543.210 (Currency) -> 9876543
//       The format of '9.876.543,210// is invalid.
//       The format of '98_76_54_32,19// is invalid.
//       
//       Parsing using the nl-NL culture:
//       The format of // 987.654E-2// is invalid.
//       The format of // 987,654E-2// is invalid.
//       (98765,43210) (Currency) -> -98765.43
//       The format of '9,876,543.210// is invalid.
//       9.876.543,210 (Currency) -> 9876543
//       The format of '98_76_54_32,19// is invalid.
//       
//       Parsing using the Invariant culture:
//       The format of // 987.654E-2// is invalid.
//       The format of // 987,654E-2// is invalid.
//       (98765,43210) (Currency) -> -9.876543E+09
//       9,876,543.210 (Currency) -> 9876543
//       The format of '9.876.543,210// is invalid.
//       98_76_54_32,19 (Currency) -> 9.876543E+09


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft