Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Single.Parse-Methode: (String, NumberStyles, IFormatProvider)

 

Veröffentlicht: Oktober 2016

Konvertiert die Zeichenfolgendarstellung einer Zahl in einem angegebenen Stil und einem kulturabhängigen Format in die entsprechende Gleitkommazahl mit einfacher Genauigkeit.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

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

Parameter

s
Type: System.String

Eine Zeichenfolge, die eine zu konvertierende Zahl enthält.

style
Type: System.Globalization.NumberStyles

Eine bitweise Kombination von Enumerationswerten, die die Stilelemente angeben, die in s vorhanden sein können. Ein häufig angegebener Wert ist Float in Kombination mit AllowThousands.

provider
Type: System.IFormatProvider

Ein Objekt, das kulturspezifische Formatierungsinformationen zu s bereitstellt.

Rückgabewert

Type: System.Single

Eine Gleitkommazahl mit einfacher Genauigkeit, die dem numerischen Wert oder Symbol in s entspricht.

Exception Condition
ArgumentNullException

s ist null.

FormatException

s stellt keinen numerischen Wert dar.

ArgumentException

style ist kein NumberStyles-Wert.

- oder -

style ist der AllowHexSpecifier-Wert.

OverflowException

s stellt eine Zahl dar, die kleiner als MinValue oder größer als MaxValue ist.

Die style Parameter definiert, die die Stilelemente (z. B. Leerzeichen, Tausende Trennzeichen und Währungssymbole), sind zulässig, der s Parameter, damit der Analysevorgang erfolgreich ausgeführt werden kann. Es muss eine Kombination von Bitflags aus der NumberStyles Enumeration. Die folgenden NumberStyles Elemente werden nicht unterstützt:

Die s kann Parameter enthalten NumberFormatInfo.PositiveInfinitySymbol, NumberFormatInfo.NegativeInfinitySymbol, oder NumberFormatInfo.NaNSymbol für die durch den angegebenen Kultur provider. Abhängig vom Wert style, dauert auch die Form:

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

Elemente müssen in eckigen Klammern ([und]) sind optional. In der folgenden Tabelle wird jedes Element beschrieben.

Element

Beschreibung

ws

Eine Reihe von Leerzeichen. Leerzeichen am Anfang stehen s Wenn style enthält die NumberStyles.AllowLeadingWhite Flag kann angezeigt werden, am Ende der s Wenn style enthält die NumberStyles.AllowTrailingWhite Flag.

$

Eine kulturspezifische Währungssymbol. Seine Position in der Zeichenfolge wird definiert, durch die NumberFormatInfo.CurrencyNegativePattern und NumberFormatInfo.CurrencyPositivePattern Eigenschaften der aktuellen Kultur. Das Währungssymbol der aktuellen Kultur stehen s Wenn style enthält die NumberStyles.AllowCurrencySymbol Flag.

Vorzeichen

Ein Minuszeichen (-) oder ein Pluszeichen (+). Die Zeichen am Anfang stehen s Wenn style enthält die NumberStyles.AllowLeadingSign Flag kann angezeigt werden, am Ende der s Wenn style enthält die NumberStyles.AllowTrailingSign Flag. Klammern können verwendet werden, s zum Angeben eines negativen Werts Wenn style enthält die NumberStyles.AllowParentheses Flag.

ganzzahlige Ziffern

Eine Folge von Ziffern zwischen 0 und 9, die den ganzzahligen Teil der Zahl angeben. Die ganzzahligen Ziffern Element kann nicht vorhanden, wenn die Zeichenfolge enthält den Dezimalstellen Element.

,

Eine kulturspezifische Gruppentrennzeichen. In der aktuellen Kultur Gruppentrennzeichen angezeigt werden kann s Wenn style enthält die NumberStyles.AllowThousands Flag

.

Eine kulturspezifische Dezimaltrennzeichen. In der aktuellen Kultur Dezimaltrennzeichen angezeigt werden kann s Wenn style enthält die NumberStyles.AllowDecimalPoint Flag.

Dezimalstellen sind

Eine Folge von Ziffern zwischen 0 und 9, die die Nachkommastellen der Zahl angeben. Dezimalstellen erscheinen s Wenn style enthält die NumberStyles.AllowDecimalPoint Flag.

E

Das "e" oder die Zeichen "E", der angibt, dass der Wert in Exponentialschreibweise (wissenschaftlich) dargestellt wird. Die s Parameter kann eine Zahl in Exponentialschreibweise darstellen, wenn style enthält die NumberStyles.AllowExponent Flag.

exponentielle Ziffern

Eine Folge von Ziffern zwischen 0 bis 9, die einen Exponenten angeben.

Eine Zeichenfolge mit nur-Ziffern (entspricht der NumberStyles.None Stil) immer erfolgreich analysiert. Die verbleibenden System.Globalization.NumberStyles Member steuern Elemente, die möglicherweise vorhanden, jedoch sind nicht erforderlich, in der Eingabezeichenfolge vorhanden sein. In der folgenden Tabelle gibt an, wie einzelne NumberStyles Flags Auswirkungen auf die Elemente, die möglicherweise in vorhandene s.

NumberStyles-Wert

Elemente in zulässig s neben Ziffern

None

Die ganzzahligen Ziffern nur Element.

AllowDecimalPoint

Das Dezimaltrennzeichen (.) und Dezimalstellen Elemente.

AllowExponent

Das "e" oder "E"-Zeichen, das Exponentialschreibweise angibt. Dieses Flag allein unterstützt Werte im Formular ZiffernEZiffern; zusätzliche Flags sind erforderlich, um Zeichenfolgen mit Elementen wie positiven und negativen Vorzeichen und Dezimaltrennzeichen erfolgreich analysiert.

AllowLeadingWhite

Die ws Element am Anfang des s.

AllowTrailingWhite

Die ws Element am Ende der s.

AllowLeadingSign

Die Anmeldung Element am Anfang des s.

AllowTrailingSign

Die Anmeldung Element am Ende der s.

AllowParentheses

Die Anmeldung Element in Form von Klammern, die den numerischen Wert einschließen.

AllowThousands

Das 1000er-Trennzeichen-Element.

AllowCurrencySymbol

Das Element, Currency ($).

Currency

Alle Elemente. Allerdings s keine hexadezimale Zahl oder einer Zahl in Exponentialschreibweise darstellen.

Float

Die ws Element am Anfang oder Ende des s, Anmeldung am Anfang des s, und das Dezimaltrennzeichen (.) Symbol. Die s Parameter können auch Exponentialschreibweise.

Number

Die ws, sign, Tausender-Trennzeichen und Dezimaltrennzeichen (.) Elemente.

Any

Alle Elemente. Allerdings s eine hexadezimale Zahl nicht darstellen kann.

Die provider Parameter ist ein IFormatProvider Implementierung. Die GetFormat Methode gibt ein NumberFormatInfo -Objekt, das kulturspezifische Informationen zum Format von bietet value. In der Regel provider kann eine der folgenden sein:

  • Ein CultureInfo Objekt, das die Kultur darstellt, die numerische Formatierungsinformationen bereitstellt. Die GetFormat Methode gibt die NumberFormatInfo -Objekt, das numerische Formatierungsinformationen bereitstellt.

  • Ein NumberFormatInfo Objekt, das Formatierungsinformationen bereitstellt. (Die Implementierung von GetFormat nur gibt sich selbst zurück.)

  • Ein benutzerdefiniertes Objekt, das implementiert IFormatProvider und verwendet die GetFormat Methode instanziieren und Zurückgeben der NumberFormatInfo Objekt, das Formatierungsinformationen bereitstellt.

Wenn provider ist nulldie NumberFormatInfo -Objekt für die aktuelle Kultur verwendet wird.

Wenn es eine Trennzeichen in kommt die s Parameter, während ein Analysevorgang und der geltenden Währung oder die Anzahl von Dezimalstellen und Gruppentrennzeichen stimmen überein, der Analysevorgang wird davon ausgegangen, dass das Trennzeichen ein Dezimaltrennzeichen und Gruppentrennzeichen ist. Weitere Informationen über Trennzeichen finden Sie unter CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator, und NumberGroupSeparator.

Im folgenden Codebeispiel wird mit der Parse(String, NumberStyles, IFormatProvider) Methode analysiert die zeichenfolgendarstellungen Single Werte. Jede Zeichenfolge in einem Array wird die Verwendung der Formatierungskonventionen der En-US, nl-NL und eine benutzerdefinierte Kultur analysiert. Die benutzerdefinierte Kultur definiert seine Gruppentrennzeichen als der Unterstrich ("_") und seine Gruppengröße als zwei.

using System;
using System.Globalization;

public class Example
{
    public static void Main()
    {
      // 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)
      {
         Console.WriteLine("Parsing using the {0} culture:", 
                           provider.Name == String.Empty ? "Invariant" : provider.Name);
         // 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);            
                  Console.WriteLine("   {0} ({1}) -> {2}", 
                                    value, style, number);
               }
               catch (FormatException) {
                  Console.WriteLine("   '{0}' is invalid using {1}.", value, style);
               }
               catch (OverflowException) {
                  Console.WriteLine("   '{0}' is out of the range of a Single.", value);
               } 
            }            
         }         
         Console.WriteLine();
      }
   }   
} 
// 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

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: