BigInteger.Parse メソッド

定義

数値の文字列形式を、それと等価の BigInteger に変換します。

オーバーロード

Parse(String)

数値の文字列形式を、それと等価の BigInteger に変換します。

Parse(ReadOnlySpan<Char>, IFormatProvider)

文字のスパンを値に解析します。

Parse(String, NumberStyles)

指定のスタイルで表現された数値の文字列形式を、それと等価な BigInteger に変換します。

Parse(String, IFormatProvider)

指定されたカルチャ固有の書式で表現された文字列形式の数値を、それと等価の BigInteger に変換します。

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

指定の文字の読み取り専用のスパンに含まれている、指定のスタイルで表現された数値を、それと等価な BigInteger に変換します。

Parse(String, NumberStyles, IFormatProvider)

指定したスタイルおよびカルチャ固有の書式の数値の文字列形式を、それと等価の BigInteger に変換します。

Parse(String)

ソース:
BigInteger.cs
ソース:
BigInteger.cs
ソース:
BigInteger.cs

数値の文字列形式を、それと等価の BigInteger に変換します。

public:
 static System::Numerics::BigInteger Parse(System::String ^ value);
public static System.Numerics.BigInteger Parse (string value);
static member Parse : string -> System.Numerics.BigInteger
Public Shared Function Parse (value As String) As BigInteger

パラメーター

value
String

変換する数値を含んだ文字列。

戻り値

value パラメーターで指定されている数値と等価の値。

例外

valuenullです。

value が正しい形式ではありません。

次の例では、 メソッドを Parse(String) 使用して 2 つの BigInteger オブジェクトをインスタンス化します。 各オブジェクトに別の数値を乗算し、 メソッドを Compare 呼び出して 2 つの値間のリレーションシップを決定します。

string stringToParse = String.Empty;
try
{
   // Parse two strings.
   string string1, string2;
   string1 = "12347534159895123";
   string2 = "987654321357159852";
   stringToParse = string1;
   BigInteger number1 = BigInteger.Parse(stringToParse);
   Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number1);
   stringToParse = string2;
   BigInteger number2 = BigInteger.Parse(stringToParse);
   Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number2);
   // Perform arithmetic operations on the two numbers.
   number1 *= 3;
   number2 *= 2;
   // Compare the numbers.
   int result = BigInteger.Compare(number1, number2);
   switch (result)
   {
      case -1:
         Console.WriteLine("{0} is greater than {1}.", number2, number1);
         break;
      case 0:
         Console.WriteLine("{0} is equal to {1}.", number1, number2);
         break;
      case 1:
         Console.WriteLine("{0} is greater than {1}.", number1, number2);
         break;
   }
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse {0}.", stringToParse);
}
// The example displays the following output:
//    Converted '12347534159895123' to 12,347,534,159,895,123.
//    Converted '987654321357159852' to 987,654,321,357,159,852.
//    1975308642714319704 is greater than 37042602479685369.
Dim stringToParse As String = String.Empty
Try
   ' Parse two strings.
   Dim string1, string2 As String
   string1 = "12347534159895123"
   string2 = "987654321357159852"
   stringToParse = string1
   Dim number1 As BigInteger = BigInteger.Parse(stringToParse)
   Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number1)
   stringToParse = string2
   Dim number2 As BigInteger = BigInteger.Parse(stringToParse)
   Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number2)
   ' Perform arithmetic operations on the two numbers.
   number1 *= 3
   number2 *= 2
   ' Compare the numbers.
   Select Case BigInteger.Compare(number1, number2)
      Case -1
         Console.WriteLine("{0} is greater than {1}.", number2, number1)
      Case 0
         Console.WriteLine("{0} is equal to {1}.", number1, number2)
      Case 1
         Console.WriteLine("{0} is greater than {1}.", number1, number2)
   End Select      
Catch e As FormatException
   Console.WriteLine("Unable to parse {0}.", stringToParse)
End Try
' The example displays the following output:
'    Converted '12347534159895123' to 12,347,534,159,895,123.
'    Converted '987654321357159852' to 987,654,321,357,159,852.
'    1975308642714319704 is greater than 37042602479685369.

注釈

パラメーターは value 、次の形式の数値の文字列表現である必要があります。

[ws][sign]digits[ws]

角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。

要素 説明
ws オプションの空白。
sign 省略可能な記号。 有効な符号文字は、現在のカルチャの NumberFormatInfo.NegativeSign プロパティと NumberFormatInfo.PositiveSign プロパティによって決まります。
数値 0 から 9 までの数字のシーケンス。 先行ゼロは無視されます。

注意

パラメーターで value 指定された文字列は、 スタイルを使用 NumberStyles.Integer して解釈されます。 グループ区切り記号または小数点記号を含めることはできません。また、小数部を含めることはできません。

パラメーターは value 、現在のシステム カルチャ用に初期化されたオブジェクトの System.Globalization.NumberFormatInfo 書式設定情報を使用して解析されます。 詳細については、「NumberFormatInfo.CurrentInfo」を参照してください。 特定のカルチャの書式設定情報を使用して文字列を解析するには、 メソッドを使用します Parse(String, IFormatProvider)

重要

メソッドをParse使用して、 メソッドによってToString出力された値のBigInteger文字列表現をラウンドトリップする場合は、 メソッドを "R" 書式指定子と共に使用BigInteger.ToString(String)して、値の文字列表現を生成するBigInteger必要があります。 それ以外の場合、 の文字列表現では元の BigInteger 値の最上位 50 桁のみが保持され、 メソッドを Parse 使用して値を復元 BigInteger するとデータが失われる可能性があります。

こちらもご覧ください

適用対象

Parse(ReadOnlySpan<Char>, IFormatProvider)

ソース:
BigInteger.cs
ソース:
BigInteger.cs
ソース:
BigInteger.cs

文字のスパンを値に解析します。

public:
 static System::Numerics::BigInteger Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse (ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As BigInteger

パラメーター

s
ReadOnlySpan<Char>

解析する文字のスパン。

provider
IFormatProvider

s に関するカルチャ固有の書式情報を提供するオブジェクト。

戻り値

を解析した s結果。

実装

適用対象

Parse(String, NumberStyles)

ソース:
BigInteger.cs
ソース:
BigInteger.cs
ソース:
BigInteger.cs

指定のスタイルで表現された数値の文字列形式を、それと等価な BigInteger に変換します。

public:
 static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style);
public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style);
static member Parse : string * System.Globalization.NumberStyles -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, style As NumberStyles) As BigInteger

パラメーター

value
String

変換する数値を含んだ文字列。

style
NumberStyles

value に許可されている書式を指定する列挙値のビットごとの組み合わせ。

戻り値

value パラメーターで指定されている数値と等価の値。

例外

styleNumberStyles 値ではありません。

- または -

style には、別の値と共に AllowHexSpecifier または HexNumber フラグが含まれます。

valuenullです。

value は、NumberStyles によって指定された入力パターンに従っていません。

次の例では、 パラメーターに使用できるいくつかの値を Parse(String, NumberStyles) 持つ メソッドの呼び出しを style 示します。 文字列を 16 進数の値として解釈する方法と、スペースと記号を禁止する方法を示します。

BigInteger number;
// Method should succeed (white space and sign allowed)
number = BigInteger.Parse("   -68054   ", NumberStyles.Integer);
Console.WriteLine(number);
// Method should succeed (string interpreted as hexadecimal)
number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier);
Console.WriteLine(number);
// Method call should fail: sign not allowed
try
{
   number = BigInteger.Parse("   -68054  ", NumberStyles.AllowLeadingWhite
                                            | NumberStyles.AllowTrailingWhite);
   Console.WriteLine(number);
}
catch (FormatException e)
{
   Console.WriteLine(e.Message);
}
// Method call should fail: white space not allowed
try
{
   number = BigInteger.Parse("   68054  ", NumberStyles.AllowLeadingSign);
   Console.WriteLine(number);
}
catch (FormatException e)
{
   Console.WriteLine(e.Message);
}
//
// The method produces the following output:
//
//     -68054
//     426068
//     Input string was not in a correct format.
//     Input string was not in a correct format.
Dim number As BigInteger 
' Method should succeed (white space and sign allowed)
number = BigInteger.Parse("   -68054   ", NumberStyles.Integer)
Console.WriteLine(number)
' Method should succeed (string interpreted as hexadecimal)
number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier)
Console.WriteLine(number)
' Method call should fail: sign not allowed
Try
   number = BigInteger.Parse("   -68054  ", NumberStyles.AllowLeadingWhite _
                                            Or NumberStyles.AllowTrailingWhite)
   Console.WriteLine(number)
Catch e As FormatException
   Console.WriteLine(e.Message)
End Try                                                     
' Method call should fail: white space not allowed
Try
   number = BigInteger.Parse("   68054  ", NumberStyles.AllowLeadingSign)
   Console.WriteLine(number)
Catch e As FormatException
   Console.WriteLine(e.Message)
End Try    
'
' The method produces the following output:
'
'     -68054
'     426068
'     Input string was not in a correct format.
'     Input string was not in a correct format.

注釈

パラメーターは style 、解析操作を成功させるためにパラメーターで value 許可されるスタイル要素 (空白、正または負の記号、グループ区切り記号、小数点記号など) を定義します。 styles は、列挙からのビット フラグ NumberStyles の組み合わせである必要があります。 パラメーターはstyle、 で表される数値システム (10 進数または 16 進数) が実行時にのみ認識されるvalue場合、または で空白または記号記号valueを禁止する場合に、16 進数の値の文字列表現を含む場合に、このメソッドのオーバーロードを役立ちますvalue

style値によっては、パラメーターに value 次の要素が含まれる場合があります。

[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]

に が含まれているNumberStyles.AllowHexSpecifier場合style、パラメーターにはvalue次の要素を含めることができます。

[ws]hexdigits[ws]

角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。

要素 説明
ws オプションの空白。 空白は、フラグを含む場合は のvalue先頭に表示され、フラグが含NumberStyles.AllowLeadingWhiteまれている場合styleは のvalue末尾にNumberStyles.AllowTrailingWhite表示styleできます。
$ カルチャ固有の通貨記号。 文字列内での位置は、現在のカルチャの NumberFormatInfo.CurrencyNegativePattern プロパティと NumberFormatInfo.CurrencyPositivePattern プロパティによって定義されます。 フラグが含まれている場合styleは、現在のカルチャの通貨記号を にvalueNumberStyles.AllowCurrencySymbol表示できます。
sign 省略可能な記号。 この記号は、 フラグを含む場合styleは のvalue先頭に表示でき、フラグが含まれている場合styleは のvalue末尾にNumberStyles.AllowTrailingSign表示NumberStyles.AllowLeadingSignできます。 に フラグが含まれている場合style、かっこを使用valueして負の値をNumberStyles.AllowParentheses示すことができます。
数値

fractional_digits

exponential_digits
0 ~ 9 の数字のシーケンス。 fractional_digitsの場合、数字 0 のみが有効です。
, カルチャ固有のグループ区切り記号。 現在のカルチャのグループ区切り記号は、 フラグが value 含まれている場合 styleNumberStyles.AllowThousands に表示できます。
. カルチャ固有の小数点記号。 現在のカルチャの小数点記号は、 フラグが含まれている場合styleNumberStyles.AllowDecimalPointvalueに表示できます。 解析操作を成功させるために小数部の数字として表示できるのは、数字 0 だけです。 fractional_digits に他の数字が含まれている場合は、 FormatException がスローされます。
E "e" または "E" 文字。値が指数 (指数) 表記で表されることを示します。 フラグが含まれている場合style、パラメーターはvalue指数表記で数値をNumberStyles.AllowExponent表すことができます。
hexdigits 0 から f、または 0 から F までの 16 進数のシーケンス。

注意

の終端 NUL (U+0000) 文字 s は、引数の値 style に関係なく、解析操作では無視されます。

数字のみの文字列 (スタイルに NumberStyles.None 対応) は常に正常に解析されます。 残りの NumberStyles メンバーのほとんどは、入力文字列に存在する可能性がありますが、存在する必要がない要素を制御します。 次の表は、 にvalue存在する可能性がある要素に個々NumberStylesのメンバーがどのように影響するかを示しています。

NumberStyles 数字に加えて許可される value 要素
None digits 要素のみ。
AllowDecimalPoint 小数点 (.) 要素と 小数部の要素
AllowExponent 指数表記と exponential_digitsを示す "e" または "E" 文字。
AllowLeadingWhite の先頭valueにある ws 要素。
AllowTrailingWhite の末尾valueにある ws 要素。
AllowLeadingSign の先頭valueにある sign 要素。
AllowTrailingSign の末尾valueにある sign 要素。
AllowParentheses 数値を囲むかっこの形式の sign 要素。
AllowThousands グループ区切り記号 (,) 要素。
AllowCurrencySymbol currency ($) 要素。
Currency すべての要素。 ただし、 value 16 進数または数値を指数表記で表すことはできません。
Float の先頭または末尾の valuews 要素、の先頭value符号、および小数点 (.) 記号。 パラメーターでは value 、指数表記を使用することもできます。
Number wssign、グループ区切り記号 ()、および小数点 (.) 要素。
Any すべての要素。 ただし、 value 16 進数を表すことはできません。

重要

メソッドをParse使用して、 メソッドによってToString出力された値の文字列表現をBigIntegerラウンドトリップする場合は、 メソッドを "R" 書式指定子と共に使用BigInteger.ToString(String)して、値の文字列表現を生成するBigInteger必要があります。 それ以外の場合、 の文字列形式では元の BigInteger 値の最上位の 50 桁のみが保持され、 メソッドを使用 Parse して値を復元 BigInteger するとデータが失われる可能性があります。

に特定のスタイル要素NumberStyles.AllowHexSpecifiervalueが存在することを許容するが、必要としない他NumberStylesの値とは異なり、スタイル値は、 のvalue個々の数値が常に 16 進文字として解釈されることを意味します。 有効な 16 進文字は、0 から 9、A から F、a から f です。 パラメーターと組み合わせることができる他の style フラグは NumberStyles.AllowLeadingWhiteNumberStyles.AllowTrailingWhiteのみです。 (列挙には NumberStylesHexNumber両方の空白フラグを含む複合数値スタイル が含まれています)。

注意

が 16 進数の文字列表現である場合value、その前に 16 進数として区別する装飾 (や &hなど0x) を付けることはできません。 これにより、変換が失敗します。

が 16 進数の文字列の場合value、メソッドは、Parse(String, NumberStyles)最初の 2 つの 16 進数が 以上0x80の場合、2 つの補数表現を使用して格納される負の数として解釈valueします。 つまり、 メソッドは、 の最初のバイト value の最上位ビットを符号ビットとして解釈します。 16 進文字列が正の数値として正しく解釈されるようにするには、 の value 最初の桁の値が 0 である必要があります。 たとえば、 メソッドは負の0x80値として解釈されますが、 または 0x00800x080正の値として解釈されます。 次の例は、負の値と正の値を表す 16 進数の文字列の違いを示しています。

using System;
using System.Globalization;
using System.Numerics;

public class Example
{
   public static void Main()
   {
      string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
                              "080", "0E293", "0F9A2FF", "0FFFFFFFF",
                              "0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
      foreach (string hexString in hexStrings)
      {
         BigInteger number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier);
         Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
      }
   }
}
// The example displays the following output:
//       Converted 0x80 to -128.
//       Converted 0xE293 to -7533.
//       Converted 0xF9A2FF to -417025.
//       Converted 0xFFFFFFFF to -1.
//       Converted 0x080 to 128.
//       Converted 0x0E293 to 58003.
//       Converted 0x0F9A2FF to 16360191.
//       Converted 0x0FFFFFFFF to 4294967295.
//       Converted 0x0080 to 128.
//       Converted 0x00E293 to 58003.
//       Converted 0x00F9A2FF to 16360191.
//       Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics

Module Example
   Public Sub Main()
      Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF", 
                                     "080", "0E293", "0F9A2FF", "0FFFFFFFF",  
                                     "0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
      For Each hexString As String In hexStrings
         Dim number As BigInteger = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
         Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
      Next         
   End Sub
End Module
' The example displays the following output:
'       Converted 0x80 to -128.
'       Converted 0xE293 to -7533.
'       Converted 0xF9A2FF to -417025.
'       Converted 0xFFFFFFFF to -1.
'       Converted 0x080 to 128.
'       Converted 0x0E293 to 58003.
'       Converted 0x0F9A2FF to 16360191.
'       Converted 0x0FFFFFFFF to 4294967295.
'       Converted 0x0080 to 128.
'       Converted 0x00E293 to 58003.
'       Converted 0x00F9A2FF to 16360191.
'       Converted 0x00FFFFFFFF to 4294967295.

パラメーターは value 、現在のシステム カルチャ用に初期化された オブジェクトの NumberFormatInfo 書式設定情報を使用して解析されます。 解析操作に書式設定情報を使用するカルチャを指定するには、 オーバーロードを Parse(String, NumberStyles, IFormatProvider) 呼び出します。

こちらもご覧ください

適用対象

Parse(String, IFormatProvider)

ソース:
BigInteger.cs
ソース:
BigInteger.cs
ソース:
BigInteger.cs

指定されたカルチャ固有の書式で表現された文字列形式の数値を、それと等価の BigInteger に変換します。

public:
 static System::Numerics::BigInteger Parse(System::String ^ value, IFormatProvider ^ provider);
public:
 static System::Numerics::BigInteger Parse(System::String ^ value, IFormatProvider ^ provider) = IParsable<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse (string value, IFormatProvider provider);
public static System.Numerics.BigInteger Parse (string value, IFormatProvider? provider);
static member Parse : string * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, provider As IFormatProvider) As BigInteger

パラメーター

value
String

変換する数値を含んだ文字列。

provider
IFormatProvider

value に関するカルチャ固有の書式情報を提供するオブジェクト。

戻り値

value パラメーターで指定されている数値と等価の値。

実装

例外

valuenullです。

value が正しい形式ではありません。

次の例では、チルダ (~) を書式設定値の負の符号として定義する 2 つの方法を BigInteger 示します。 元の BigInteger 文字列と同じ形式で値を表示するには、コードで メソッドを呼び出し BigInteger.ToString(IFormatProvider) 、書式設定情報を提供する オブジェクトを渡す NumberFormatInfo 必要があります。

最初の例では、 メソッドを実装 IFormatProvider し、 メソッドを GetFormat 使用して書式設定情報を提供するオブジェクトを NumberFormatInfo 返すクラスを定義します。

public class BigIntegerFormatProvider : IFormatProvider
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(NumberFormatInfo))
      {
         NumberFormatInfo numberFormat = new NumberFormatInfo();
         numberFormat.NegativeSign = "~";
         return numberFormat;
      }
      else
      {
         return null;
      }
   }
}
Public Class BigIntegerFormatProvider : Implements IFormatProvider
   Public Function GetFormat(formatType As Type) As Object _
                            Implements IFormatProvider.GetFormat
      If formatType Is GetType(NumberFormatInfo) Then
         Dim numberFormat As New NumberFormatInfo
         numberFormat.NegativeSign = "~"
         Return numberFormat
      Else
         Return Nothing
      End If      
   End Function
End Class

その後、次の BigInteger コードを使用して オブジェクトをインスタンス化できます。

BigInteger number = BigInteger.Parse("~6354129876", new BigIntegerFormatProvider());
// Display value using same formatting information
Console.WriteLine(number.ToString(new BigIntegerFormatProvider()));
// Display value using formatting of current culture
Console.WriteLine(number);
Dim number As BigInteger = BigInteger.Parse("~6354129876", New BigIntegerFormatProvider)
' Display value using same formatting information
Console.WriteLine(number.ToString(New BigIntegerFormatProvider))
' Display value using formatting of current culture
Console.WriteLine(number)

2 番目の例は、より簡単です。 書式設定情報を NumberFormatInfo 提供する オブジェクトを パラメーターに provider 渡します。

NumberFormatInfo fmt = new NumberFormatInfo();
fmt.NegativeSign = "~";

BigInteger number = BigInteger.Parse("~6354129876", fmt);
// Display value using same formatting information
Console.WriteLine(number.ToString(fmt));
// Display value using formatting of current culture
Console.WriteLine(number);
Dim fmt As New NumberFormatInfo()
fmt.NegativeSign = "~"

Dim number As BigInteger = BigInteger.Parse("~6354129876", fmt)
' Display value using same formatting information
Console.WriteLine(number.ToString(fmt))
' Display value using formatting of current culture
Console.WriteLine(number)

注釈

パラメーターは value 、次の形式の数値の文字列表現である必要があります。

[ws][sign]digits[ws]

角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。

要素 説明
ws オプションの空白。
sign 省略可能な記号。 有効な符号文字は、オブジェクトの NumberFormatInfo.NegativeSign メソッドによって返される オブジェクトの NumberFormatInfo プロパティと NumberFormatInfo.PositiveSign プロパティによってproviderGetFormat決まります。
数値 0 から 9 までの数字のシーケンス。 先頭の 0 は無視されます。

注意

パラメーターで value 指定された文字列は、 スタイルを NumberStyles.Integer 使用して解釈されます。 グループ区切り記号または小数点区切り記号を含めることはできません。また、小数部を含めることもできます。

重要

メソッドをParse使用して、 メソッドによってToString出力された値の文字列表現をBigIntegerラウンドトリップする場合は、 メソッドを "R" 書式指定子と共に使用BigInteger.ToString(String)して、値の文字列表現を生成するBigInteger必要があります。 それ以外の場合、 の文字列形式では元の BigInteger 値の最上位の 50 桁のみが保持され、 メソッドを使用 Parse して値を復元 BigInteger するとデータが失われる可能性があります。

パラメーターはprovider、カルチャ固有のIFormatProviderGetFormat書式設定情報を提供する オブジェクトをNumberFormatInfoメソッドが返す実装です。 メソッドがParse(String, IFormatProvider)呼び出されると、パラメーターの GetFormat メソッドをprovider呼び出し、型をType表すオブジェクトをNumberFormatInfo渡します。 メソッドは GetFormat 、パラメーターの形式に NumberFormatInfo 関する情報を提供する オブジェクトを value 返します。 パラメーターを使用 provider して、解析操作にカスタム書式情報を指定するには、次の 3 つの方法があります。

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

  • 数値書式情報を提供する実際 NumberFormatInfo のオブジェクトを渡すことができます。 (の実装 GetFormat は、それ自体を返すだけです)。

  • を実装 IFormatProviderするカスタム オブジェクトを渡すことができます。 そのメソッドは GetFormat 、書式設定情報を提供する オブジェクトを NumberFormatInfo インスタンス化して返します。

が の場合provider、 のvalue書式設定は、現在のカルチャの NumberFormatInfo オブジェクトに基づいて解釈nullされます。

こちらもご覧ください

適用対象

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

ソース:
BigInteger.cs
ソース:
BigInteger.cs
ソース:
BigInteger.cs

指定の文字の読み取り専用のスパンに含まれている、指定のスタイルで表現された数値を、それと等価な BigInteger に変換します。

public static System.Numerics.BigInteger Parse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
public static System.Numerics.BigInteger Parse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider provider = default);
static member Parse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As ReadOnlySpan(Of Char), Optional style As NumberStyles = System.Globalization.NumberStyles.Integer, Optional provider As IFormatProvider = Nothing) As BigInteger

パラメーター

value
ReadOnlySpan<Char>

変換する番号を含む文字の読み取り専用のスパン。

style
NumberStyles

value に許可されている書式を指定する列挙値のビットごとの組み合わせ。

provider
IFormatProvider

value に関するカルチャ固有の書式情報を提供するオブジェクト。

戻り値

value パラメーターで指定されている数値と等価の値。

実装

例外

styleNumberStyles 値ではありません。

- または -

style には、別の値と共に AllowHexSpecifier または HexNumber フラグが含まれます。

valuenullです。

value は、style によって指定された入力パターンに従っていません。

注釈

パラメーターは style 、解析操作を成功させるためにパラメーターで value 許可されるスタイル要素 (空白、正または負の符号記号、グループ区切り記号、小数点記号など) を定義します。 styles は、列挙型のビット フラグ NumberStyles の組み合わせである必要があります。 パラメーターはstyle、 で表される数値システム (10 進数または 16 進数) が実行時にのみ認識されるvalue場合、または で空白または記号記号valueを禁止する場合に、16 進数の値の表現が含まれている場合に、このメソッドオーバーロードを役立ちますvalue

style値に応じて、 パラメーターに value 次の要素を含めることができます。

[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]

に が含まれているNumberStyles.AllowHexSpecifier場合style、パラメーターにはvalue次の要素を含めることができます。

[ws]hexdigits[ws]

角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。

要素 説明
ws オプションの空白。 空白は、 フラグを含む場合は のvalue先頭に表示され、フラグが含NumberStyles.AllowLeadingWhiteまれている場合styleは のvalue末尾にNumberStyles.AllowTrailingWhite表示styleされます。
$ カルチャ固有の通貨記号。 の value 位置は、 パラメーターで NumberFormatInfo.CurrencyNegativePattern 示されるカルチャの プロパティと NumberFormatInfo.CurrencyPositivePattern プロパティによって provider 定義されます。 に フラグが含まれている場合styleは、現在のカルチャの通貨記号を NumberStyles.AllowCurrencySymbolvalue表示できます。
sign 省略可能な記号。 署名は、 フラグが含まれている場合は のvalue先頭に表示され、フラグが含NumberStyles.AllowLeadingSignまれている場合styleは のvalue末尾にNumberStyles.AllowTrailingSign表示styleされます。 に フラグが含まれている場合styleは、かっこを使用valueして負の値をNumberStyles.AllowParentheses示すことができます。
数値

fractional_digits

exponential_digits
0 から 9 までの数字のシーケンス。 fractional_digitsの場合、数字 0 のみが有効です。
, カルチャ固有のグループ区切り記号。 でprovider指定されたカルチャのグループ区切り記号は、 に フラグが含まれている場合stylevalueNumberStyles.AllowThousands表示できます。
. カルチャ固有の小数点記号。 でprovider指定されたカルチャの小数点記号は、 に フラグが含まれている場合styleNumberStyles.AllowDecimalPointvalue表示できます。 解析操作を成功させるために小数部の数字として表示できるのは、数字 0 のみです。 fractional_digitsに他の 数字が含まれている場合は、 FormatException がスローされます。
E "e" または "E" 文字。値が指数 (指数) 表記で表されることを示します。 フラグが含まれている場合style、パラメーターはvalue指数表記で数値をNumberStyles.AllowExponent表すことができます。
hexdigits 0 から f、または 0 から F までの 16 進数のシーケンス。

注意

の終端の NUL (U+0000) 文字 s は、引数の style 値に関係なく、解析操作では無視されます。

value数字のみを含む (スタイルにNumberStyles.None対応する) は常に正常に解析されます。 残りの NumberStyles メンバーのほとんどは、 に存在する可能性がありますが、存在する必要がない要素を value制御します。 次の表は、 に存在する可能性がある要素に対する個々 NumberStyles のメンバーの value影響を示しています。

NumberStyles 値 数字に加えて値で許可される要素
None digits 要素のみ。
AllowDecimalPoint 小数点 (.) 要素と 小数部の要素
AllowExponent 指数表記を示す "e" または "E" 文字。 exponential_digits。
AllowLeadingWhite の先頭valueにある ws 要素。
AllowTrailingWhite の末尾valueにある ws 要素。
AllowLeadingSign の先頭valueにある sign 要素。
AllowTrailingSign の末尾valueにある sign 要素。
AllowParentheses 数値を囲むかっこの形式の sign 要素。
AllowThousands グループ区切り記号 (,) 要素。
AllowCurrencySymbol currency ($) 要素。
Currency すべての要素。 ただし、 value 16 進数または数値を指数表記で表すことはできません。
Float の先頭または末尾の valuews 要素、の先頭value符号、および小数点 (.) 記号。 パラメーターでは value 、指数表記を使用することもできます。
Number wssign、グループ区切り記号 (、)、および小数点 (.) 要素。
Any すべての要素。 ただし、 value 16 進数を表すことはできません。

で特定のスタイル要素valueNumberStyles.AllowHexSpecifierが存在することを許可するが必要としない他NumberStylesの値とは異なり、スタイル値は、 のvalue個々の数値が常に 16 進数として解釈されることを意味します。 有効な 16 進文字は、0 から 9、A から F、a から f です。 パラメーターと組み合わせることができる他の style フラグは NumberStyles.AllowLeadingWhiteNumberStyles.AllowTrailingWhiteのみです。 (列挙には NumberStylesHexNumber両方の空白フラグを含む複合数値スタイル が含まれています)。

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

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

  • NumberFormatInfo書式設定情報を提供する オブジェクト。 (の実装 GetFormat は、それ自体を返すだけです)。

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

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

こちらもご覧ください

適用対象

Parse(String, NumberStyles, IFormatProvider)

ソース:
BigInteger.cs
ソース:
BigInteger.cs
ソース:
BigInteger.cs

指定したスタイルおよびカルチャ固有の書式の数値の文字列形式を、それと等価の BigInteger に変換します。

public:
 static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider);
public:
 static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider) = System::Numerics::INumberBase<System::Numerics::BigInteger>::Parse;
public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style, IFormatProvider provider);
public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style, IFormatProvider? provider);
static member Parse : string * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, style As NumberStyles, provider As IFormatProvider) As BigInteger

パラメーター

value
String

変換する数値を含んだ文字列。

style
NumberStyles

value に許可されている書式を指定する列挙値のビットごとの組み合わせ。

provider
IFormatProvider

value に関するカルチャ固有の書式情報を提供するオブジェクト。

戻り値

value パラメーターで指定されている数値と等価の値。

実装

例外

styleNumberStyles 値ではありません。

- または -

style には、別の値と共に AllowHexSpecifier または HexNumber フラグが含まれます。

valuenullです。

value は、style によって指定された入力パターンに従っていません。

次の例では、 パラメーターと provider パラメーターのParse(String, NumberStyles, IFormatProvider)styleのさまざまな組み合わせを使用して、 メソッドを複数呼び出します。

// Call parse with default values of style and provider
Console.WriteLine(BigInteger.Parse("  -300   ",
                  NumberStyles.Integer, CultureInfo.CurrentCulture));
// Call parse with default values of style and provider supporting tilde as negative sign
Console.WriteLine(BigInteger.Parse("   ~300  ",
                                   NumberStyles.Integer, new BigIntegerFormatProvider()));
// Call parse with only AllowLeadingWhite and AllowTrailingWhite
// Exception thrown because of presence of negative sign
try
{
   Console.WriteLine(BigInteger.Parse("    ~300   ",
                                NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
                                new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
   Console.WriteLine("{0}: \n   {1}", e.GetType().Name, e.Message);
}
// Call parse with only AllowHexSpecifier
// Exception thrown because of presence of negative sign
try
{
   Console.WriteLine(BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier,
                                      new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
   Console.WriteLine("{0}: \n   {1}", e.GetType().Name, e.Message);
}
// Call parse with only NumberStyles.None
// Exception thrown because of presence of white space and sign
try
{
   Console.WriteLine(BigInteger.Parse(" -300 ", NumberStyles.None,
                                      new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
   Console.WriteLine("{0}: \n   {1}", e.GetType().Name, e.Message);
}
// The example displays the followingoutput:
//       -300
//       -300
//       FormatException:
//          The value could not be parsed.
//       FormatException:
//          The value could not be parsed.
//       FormatException:
//          The value could not be parsed.
' Call parse with default values of style and provider
Console.WriteLine(BigInteger.Parse("  -300   ", _
                  NumberStyles.Integer, CultureInfo.CurrentCulture))
' Call parse with default values of style and provider supporting tilde as negative sign
Console.WriteLine(BigInteger.Parse("   ~300  ", _
                                   NumberStyles.Integer, New BigIntegerFormatProvider()))
' Call parse with only AllowLeadingWhite and AllowTrailingWhite
' Exception thrown because of presence of negative sign
Try
   Console.WriteLIne(BigInteger.Parse("    ~300   ", _
                                      NumberStyles.AllowLeadingWhite Or NumberStyles.AllowTrailingWhite, _
                                      New BigIntegerFormatProvider()))
Catch e As FormatException
   Console.WriteLine("{0}: {1}   {2}", e.GetType().Name, vbCrLf, e.Message)
End Try                                   
' Call parse with only AllowHexSpecifier
' Exception thrown because of presence of negative sign
Try
   Console.WriteLIne(BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier, _
                                      New BigIntegerFormatProvider()))
Catch e As FormatException
   Console.WriteLine("{0}: {1}   {2}", e.GetType().Name, vbCrLf, e.Message)
End Try                                 
' Call parse with only NumberStyles.None
' Exception thrown because of presence of white space and sign
Try
   Console.WriteLIne(BigInteger.Parse(" -300 ", NumberStyles.None, _
                                      New BigIntegerFormatProvider()))
Catch e As FormatException
   Console.WriteLine("{0}: {1}   {2}", e.GetType().Name, vbCrLf, e.Message)
End Try
' The example displays the following output:
'       -300
'       -300
'       FormatException:
'          The value could not be parsed.
'       FormatException:
'          The value could not be parsed.
'       FormatException:
'          The value could not be parsed.

メソッドの Parse(String, NumberStyles, IFormatProvider) 個々の呼び出しの数は、チルダ (~) を負の符号として定義する次 BigIntegerFormatProvider のクラスのインスタンスを渡します。

public class BigIntegerFormatProvider : IFormatProvider
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(NumberFormatInfo))
      {
         NumberFormatInfo numberFormat = new NumberFormatInfo();
         numberFormat.NegativeSign = "~";
         return numberFormat;
      }
      else
      {
         return null;
      }
   }
}
Public Class BigIntegerFormatProvider : Implements IFormatProvider
   Public Function GetFormat(formatType As Type) As Object _
                            Implements IFormatProvider.GetFormat
      If formatType Is GetType(NumberFormatInfo) Then
         Dim numberFormat As New NumberFormatInfo
         numberFormat.NegativeSign = "~"
         Return numberFormat
      Else
         Return Nothing
      End If      
   End Function
End Class

注釈

パラメーターは style 、解析操作を成功させるためにパラメーターで value 許可されるスタイル要素 (空白、正または負の符号記号、グループ区切り記号、小数点記号など) を定義します。 styles は、列挙型のビット フラグ NumberStyles の組み合わせである必要があります。 パラメーターはstyle、 で表される数値システム (10 進数または 16 進数) が実行時にのみ認識されるvalue場合、または で空白または記号をvalue禁止する場合に、16 進数の値の文字列表現を含む場合に、このメソッドオーバーロードを役立ちますvalue

style値に応じて、 パラメーターに value 次の要素を含めることができます。

[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]

に が含まれているNumberStyles.AllowHexSpecifier場合style、パラメーターにはvalue次の要素を含めることができます。

[ws]hexdigits[ws]

角かっこ ([ および ]) 内の要素は省略可能です。 次の表は、それぞれの要素の説明です。

要素 説明
ws オプションの空白。 空白は、 フラグを含む場合は のvalue先頭に表示され、フラグが含NumberStyles.AllowLeadingWhiteまれている場合styleは のvalue末尾にNumberStyles.AllowTrailingWhite表示styleされます。
$ カルチャ固有の通貨記号。 文字列内での位置は、 パラメーターによって NumberFormatInfo.CurrencyNegativePattern 示されるカルチャの プロパティと NumberFormatInfo.CurrencyPositivePattern プロパティによって provider 定義されます。 に フラグが含まれている場合styleは、現在のカルチャの通貨記号を NumberStyles.AllowCurrencySymbolvalue表示できます。
sign 省略可能な記号。 署名は、 フラグが含まれている場合は のvalue先頭に表示され、フラグが含NumberStyles.AllowLeadingSignまれている場合styleは のvalue末尾にNumberStyles.AllowTrailingSign表示styleされます。 に フラグが含まれている場合styleは、かっこを使用valueして負の値をNumberStyles.AllowParentheses示すことができます。
数値

fractional_digits

exponential_digits
0 から 9 までの数字のシーケンス。 fractional_digitsの場合、数字 0 のみが有効です。
, カルチャ固有のグループ区切り記号。 で指定されたproviderカルチャのグループ区切り記号は、 フラグが含まれている場合styleに にvalueNumberStyles.AllowThousands表示できます。
. カルチャ固有の小数点記号。 によって指定されたproviderカルチャの小数点記号は、 フラグが含まれている場合styleに にNumberStyles.AllowDecimalPointvalue表示できます。 解析操作を成功させるために小数部の数字として表示できるのは、数字 0 だけです。 fractional_digits に他の数字が含まれている場合は、 FormatException がスローされます。
E "e" または "E" 文字。値が指数 (指数) 表記で表されることを示します。 フラグが含まれている場合style、パラメーターはvalue指数表記で数値をNumberStyles.AllowExponent表すことができます。
hexdigits 0 から f、または 0 から F までの 16 進数のシーケンス。

注意

の終端 NUL (U+0000) 文字 s は、引数の値 style に関係なく、解析操作では無視されます。

数字のみの文字列 (スタイルに NumberStyles.None 対応) は常に正常に解析されます。 残りの NumberStyles メンバーのほとんどは、入力文字列に存在する可能性がありますが、存在する必要がない要素を制御します。 次の表は、 にvalue存在する可能性がある要素に個々NumberStylesのメンバーがどのように影響するかを示しています。

NumberStyles 値 数字に加えて値で許可される要素
None digits 要素のみ。
AllowDecimalPoint 小数点 (.) と 小数部の要素
AllowExponent 指数表記を示す "e" または "E" 文字。 と共 にexponential_digits
AllowLeadingWhite の先頭valueにある ws 要素。
AllowTrailingWhite の末尾valueにある ws 要素。
AllowLeadingSign の先頭valueにある sign 要素。
AllowTrailingSign の末尾valueにある sign 要素。
AllowParentheses 数値を囲むかっこの形式の 符号 要素。
AllowThousands グループ区切り記号 (,) 要素。
AllowCurrencySymbol currency ($) 要素。
Currency すべての要素。 ただし、 value 指数表記で 16 進数または数値を表すことはできません。
Float の先頭または末尾にある valuews 要素、の先頭にvalue記号を付け、小数点 (.) 記号を指定します。 パラメーターでは value 指数表記を使用することもできます。
Number wssign、グループ区切り記号 (、)、および小数点 (.) 要素。
Any すべての要素。 ただし、 value 16 進数を表すことはできません。

重要

メソッドをParse使用して、 メソッドによってToString出力された値のBigInteger文字列表現をラウンドトリップする場合は、 メソッドを "R" 書式指定子と共に使用BigInteger.ToString(String)して、値の文字列表現を生成するBigInteger必要があります。 それ以外の場合、 の文字列表現では元の BigInteger 値の最上位 50 桁のみが保持され、 メソッドを Parse 使用して値を復元 BigInteger するとデータが失われる可能性があります。

で特定のスタイル要素NumberStyles.AllowHexSpecifiervalueが存在することを許可するが、必要としない他NumberStylesの値とは異なり、スタイル値は、 のvalue個々の数値が常に 16 進文字として解釈されることを意味します。 有効な 16 進文字は、0 から 9、A から F、および a から f です。 パラメーターと組み合わせることができる他のフラグは NumberStyles.AllowLeadingWhitestyleNumberStyles.AllowTrailingWhiteのみです。 (列挙には NumberStylesHexNumber両方の空白フラグを含む複合数値スタイル が含まれています)。

注意

が 16 進数の文字列表現の場合value、前に 16 進数として区別する装飾 (や &hなど0x) を付けることはできません。 これにより、変換が失敗します。

が 16 進数の文字列の場合value、メソッドは、Parse(String, NumberStyles)最初の 2 桁の 16 進数が 以上0x80の場合、2 の補数表現を使用して格納された負の数として解釈valueします。 つまり、 メソッドは、 の最初のバイト value の最上位ビットを符号ビットとして解釈します。 16 進文字列が正の数値として正しく解釈されるようにするには、 の最初の桁の value 値が 0 である必要があります。 たとえば、 メソッドは負の0x80値として解釈されますが、または 0x00800x080正の値として解釈します。 次の例は、負の値と正の値を表す 16 進文字列の違いを示しています。

using System;
using System.Globalization;
using System.Numerics;

public class Example
{
   public static void Main()
   {
      string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
                              "080", "0E293", "0F9A2FF", "0FFFFFFFF",
                              "0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
      foreach (string hexString in hexStrings)
      {
         BigInteger number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier);
         Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
      }
   }
}
// The example displays the following output:
//       Converted 0x80 to -128.
//       Converted 0xE293 to -7533.
//       Converted 0xF9A2FF to -417025.
//       Converted 0xFFFFFFFF to -1.
//       Converted 0x080 to 128.
//       Converted 0x0E293 to 58003.
//       Converted 0x0F9A2FF to 16360191.
//       Converted 0x0FFFFFFFF to 4294967295.
//       Converted 0x0080 to 128.
//       Converted 0x00E293 to 58003.
//       Converted 0x00F9A2FF to 16360191.
//       Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics

Module Example
   Public Sub Main()
      Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF", 
                                     "080", "0E293", "0F9A2FF", "0FFFFFFFF",  
                                     "0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
      For Each hexString As String In hexStrings
         Dim number As BigInteger = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
         Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
      Next         
   End Sub
End Module
' The example displays the following output:
'       Converted 0x80 to -128.
'       Converted 0xE293 to -7533.
'       Converted 0xF9A2FF to -417025.
'       Converted 0xFFFFFFFF to -1.
'       Converted 0x080 to 128.
'       Converted 0x0E293 to 58003.
'       Converted 0x0F9A2FF to 16360191.
'       Converted 0x0FFFFFFFF to 4294967295.
'       Converted 0x0080 to 128.
'       Converted 0x00E293 to 58003.
'       Converted 0x00F9A2FF to 16360191.
'       Converted 0x00FFFFFFFF to 4294967295.

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

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

  • NumberFormatInfo書式設定情報を提供する オブジェクト。 (の実装 GetFormat はそれ自体を返すだけです)。

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

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

こちらもご覧ください

適用対象