Int32.TryParse, méthode (String, NumberStyles, IFormatProvider, Int32) (System)

Changer de vue:
ScriptFree
Bibliothèque de classes .NET Framework
Int32.TryParse, méthode (String, NumberStyles, IFormatProvider, Int32%)
Cet article a fait l'objet d'une traduction manuelle. Pour afficher simultanément cette page et le contenu source en anglais, choisissez le paramètre d'affichage Basse densité.

Convertit la chaîne d'un nombre dans un style et un format propre à une culture spécifiés en entier signé 32 bits équivalent. Une valeur de retour indique si la conversion a réussi.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)
Syntaxe

Visual Basic
Public Shared Function TryParse ( _
	s As String, _
	style As NumberStyles, _
	provider As IFormatProvider, _
	<OutAttribute> ByRef result As Integer _
) As Boolean
C#
public static bool TryParse(
	string s,
	NumberStyles style,
	IFormatProvider provider,
	out int result
)
VisualC++
public:
static bool TryParse(
	String^ s, 
	NumberStyles style, 
	IFormatProvider^ provider, 
	[OutAttribute] int% result
)
F#
static member TryParse : 
        s:string * 
        style:NumberStyles * 
        provider:IFormatProvider * 
        result:int byref -> bool 

Paramètres

s
Type : System.String
Chaîne contenant un nombre à convertir. La chaîne est interprétée à l'aide du style spécifié par style.
style
Type : System.Globalization.NumberStyles
Combinaison de bits de valeurs d'énumération qui indique les éléments de style pouvant être présents dans s. Une valeur typique à spécifier est Integer.
provider
Type : System.IFormatProvider
Objet qui fournit des informations de mise en forme propres à la culture sur s.
result
Type : System.Int32%
Lorsque cette méthode est retournée, contient la valeur de l'entier signé 32 bits équivalente au nombre contenu dans s si la conversion a réussi, ou zéro si elle a échoué. La conversion échoue si le paramètre s est null, qu'il n'est pas dans un format conforme à style ou qu'il représente un nombre inférieur à MinValue ou supérieur à MaxValue. Ce paramètre est passé sans être initialisé.

Valeur de retour

Type : System.Boolean
true si la conversion de s est réussie ; sinon, false.
Exceptions

Exception Condition
ArgumentException

style n'est pas une valeur NumberStyles.

ou

style n'est pas une combinaison de valeurs AllowHexSpecifier et HexNumber.

Notes

La méthode TryParse s'apparente à la méthode Parse, à la différence près que la méthode TryParse ne lève aucune exception en cas d'échec de la conversion. Elle élimine le besoin de recourir à la gestion des exceptions pour tester une FormatException dans le cas où s n'est pas valide et ne peut être analysé correctement.

Le paramètre style définit les éléments de style (un espace blanc ou un signe positif ou négatif, par exemple) autorisés dans le paramètre s pour que l'opération d'analyse réussisse. Il doit s'agir d'une combinaison de bits indicateurs issus de l'énumération NumberStyles. Selon la valeur de style, le paramètre s peut inclure les éléments suivants :

[ws][$][signe][chiffres,]chiffres[.chiffres_fractionnaires][e[signe]chiffres][ws]

Ou, si le paramètre style inclut AllowHexSpecifier :

[ws]chiffreshex[ws]

Les éléments entre crochets ([ et ]) sont facultatifs. Le tableau suivant décrit les différents éléments.

Élément

Description

ws

Espace blanc facultatif. L'espace blanc peut apparaître au début de s si style inclut l'indicateur NumberStyles.AllowLeadingWhite, ou à la fin de s si style inclut l'indicateur NumberStyles.AllowTrailingWhite.

$

Symbole monétaire spécifique à la culture. Sa position dans la chaîne est définie par la propriété CurrencyPositivePattern de l'objet NumberFormatInfo retourné par la méthode GetFormat du paramètre provider. Le symbole monétaire peut apparaître dans s si style inclut l'indicateur NumberStyles.AllowCurrencySymbol.

sign

Signe facultatif. Un symbole peut apparaître dans s si style inclut l'indicateur NumberStyles.AllowLeadingSign ou les indicateurs NumberStyles.AllowTrailingSign.

chiffres

Séquence de chiffres compris entre 0 et 9.

,

Séparateur des milliers spécifique à la culture. Le séparateur des milliers de la culture spécifiée par provider peut apparaître dans s si style inclut l'indicateur NumberStyles.AllowThousands.

.

Symbole de séparateur décimal spécifique à la culture. Le symbole de virgule décimale de la culture spécifiée par provider peut apparaître dans s si style inclut l'indicateur NumberStyles.AllowDecimalPoint.

chiffres_fractionnaires

Un ou plusieurs occurrences du chiffre 0. Des chiffres fractionnaires peuvent uniquement apparaître dans s si style inclut l'indicateur NumberStyles.AllowDecimalPoint.

e

Caractère e ou E, qui indique que la valeur est représentée en notation exponentielle. Le paramètre s peut représenter un nombre en notation exponentielle si style inclut l'indicateur NumberStyles.AllowExponent.

chiffreshex

Séquence de chiffres hexadécimaux compris entre 0 et f, ou 0 et F.

Une chaîne contenant uniquement des chiffres décimaux (ce qui correspond à l'indicateur NumberStyles.None) est toujours analysée avec succès. La plupart des membres NumberStyles restants contrôlent des éléments qui peuvent être présents, sans que ce soit obligatoire, dans cette chaîne d'entrée. Le tableau suivant montre de quelle manière des membres NumberStyles individuels affectent les éléments qui peuvent être présents dans s.

Valeurs NumberStyles non composites

Éléments autorisés dans s en plus des chiffres

NumberStyles.None

Chiffres décimaux uniquement.

NumberStyles.AllowDecimalPoint

Éléments de virgule décimale (.) et chiffres fractionnaires. Les chiffres_fractionnaires doivent toutefois contenir un ou plusieurs chiffres 0, sinon la méthode retourne la valeur false.

NumberStyles.AllowExponent

Le paramètre s peut également utiliser la notation exponentielle. Si s représente un nombre en notation exponentielle, il doit représenter un entier dans la plage du type de données Int32 sans composant différent de zéro et fractionnaire.

NumberStyles.AllowLeadingWhite

Élément ws au début de s.

NumberStyles.AllowTrailingWhite

Élément ws à la fin de s.

NumberStyles.AllowLeadingSign

Un signe peut apparaître devant les chiffres.

NumberStyles.AllowTrailingSign

Un signe peut apparaître après les chiffres.

NumberStyles.AllowParentheses

Élément signe sous la forme de parenthèses entourant la valeur numérique.

NumberStyles.AllowThousands

Élément de séparateur des milliers (,).

NumberStyles.AllowCurrencySymbol

Élément HTML $.

NumberStyles.Currency

Tous les éléments. Le paramètre s ne peut pas représenter un nombre hexadécimal ou un nombre en notation exponentielle.

NumberStyles.Float

Élément ws au début ou à la fin de s, signe au début de s et symbole de virgule décimale (.). Le paramètre s peut également utiliser la notation exponentielle.

NumberStyles.Number

Éléments ws, signe, séparateur des milliers (,) et séparateur décimal (.).

NumberStyles.Any

Tous les styles, à l'exception de s qui ne peut pas représenter un nombre hexadécimal.

Si l'indicateur NumberStyles.AllowHexSpecifier est utilisé, s doit être une valeur hexadécimale. Les seuls autres indicateurs qui peuvent être présents dans style sont NumberStyles.AllowLeadingWhite et NumberStyles.AllowTrailingWhite. (L'énumération NumberStyles a un style composite, NumberStyles.HexNumber, qui inclut les deux indicateurs d'espace blanc.)

Le paramètre provider est une implémentation IFormatProvider, telle qu'un objet CultureInfo ou un objet NumberFormatInfo, dont la méthode GetFormat retourne un objet NumberFormatInfo. L'objet NumberFormatInfo fournit des informations propres à la culture sur le format de s. Si provider est null, l'objet NumberFormatInfo de la culture actuelle est utilisé.

Exemples

L'exemple suivant appelle la méthode Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) avec plusieurs valeurs de chaîne et NumberStyles différentes.

Visual Basic

Imports System.Globalization

Module StringParsing
   Public Sub Main()
      Dim numericString As String
      Dim styles As NumberStyles

      numericString = "106779"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)

      numericString = "-30677"
      styles = NumberStyles.None
      CallTryParse(numericString, styles)

      styles = NumberStyles.AllowLeadingSign
      CallTryParse(numericString, styles)

      numericString = "301677-"
      CallTryParse(numericString, styles)

      styles = styles Or NumberStyles.AllowTrailingSign
      CallTryParse(numericString, styles)

      numericString = "$10634"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)

      styles = NumberStyles.Integer Or NumberStyles.AllowCurrencySymbol
      CallTryParse(numericString, styles)

      numericString = "10345.00"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "10345.72"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "22,593" 
      styles = NumberStyles.Integer Or NumberStyles.AllowThousands
      CallTryParse(numericString, styles)

      numericString = "12E-01"
      styles = NumberStyles.Integer Or NumberStyles.AllowExponent
      CallTryParse(numericString, styles) 

      numericString = "12E03"
      CallTryParse(numericString, styles) 

      numericString = "80c1"
      CallTryParse(numericString, NumberStyles.HexNumber)

      numericString = "0x80C1"
      CallTryParse(numericString, NumberStyles.HexNumber)
   End Sub

   Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
      Dim number As Integer
      Dim provider As CultureInfo

      ' If currency symbol is allowed, use en-US culture.
      If CBool(styles And NumberStyles.AllowCurrencySymbol) Then
         provider = CultureInfo.CurrentCulture
      Else
         provider = New CultureInfo("en-US")
      End If

      Dim result As Boolean = Int32.TryParse(stringToConvert, styles, _
                                             provider, number)
      If result Then
         Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number)
      Else
         Console.WriteLine("Attempted conversion of '{0}' failed.", _
                           Convert.ToString(stringToConvert))
      End If                                                                           
   End Sub
End Module
' The example displays the following output to the console:
'       Converted '106779' to 106779.
'       Attempted conversion of '-30677' failed.
'       Converted '-30677' to -30677.
'       Attempted conversion of '301677-' failed.
'       Converted '301677-' to -301677.
'       Attempted conversion of '$10634' failed.
'       Converted '$10634' to 10634.
'       Converted '10345.00' to 10345.
'       Attempted conversion of '10345.72' failed.
'       Converted '22,593' to 22593.
'       Attempted conversion of '12E-01' failed.
'       Converted '12E03' to 12000.
'       Converted '80c1' to 32961.
'       Attempted conversion of '0x80C1' failed.


C#

using System;
using System.Globalization;

public class StringParsing
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;

      numericString = "106779";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      numericString = "-30677";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);

      styles = NumberStyles.AllowLeadingSign;
      CallTryParse(numericString, styles);

      numericString = "301677-";
      CallTryParse(numericString, styles);

      styles = styles | NumberStyles.AllowTrailingSign;
      CallTryParse(numericString, styles);

      numericString = "$10634";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      styles = NumberStyles.Integer | NumberStyles.AllowCurrencySymbol;
      CallTryParse(numericString, styles);

      numericString = "10345.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10345.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "22,593"; 
      styles = NumberStyles.Integer | NumberStyles.AllowThousands;
      CallTryParse(numericString, styles);

      numericString = "12E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles); 

      numericString = "12E03";
      CallTryParse(numericString, styles); 

      numericString = "80c1";
      CallTryParse(numericString, NumberStyles.HexNumber);

      numericString = "0x80C1";
      CallTryParse(numericString, NumberStyles.HexNumber);      
   }

   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      int number;
      CultureInfo provider;

      // If currency symbol is allowed, use en-US culture.
      if ((styles & NumberStyles.AllowCurrencySymbol) > 0)
         provider = new CultureInfo("en-US");
      else
         provider = CultureInfo.InvariantCulture;

      bool result = Int32.TryParse(stringToConvert, styles, 
                                   provider, out number);
      if (result)
         Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number);
      else
         Console.WriteLine("Attempted conversion of '{0}' failed.", 
                           Convert.ToString(stringToConvert));
   }
}
// The example displays the following output to the console:
//       Converted '106779' to 106779.
//       Attempted conversion of '-30677' failed.
//       Converted '-30677' to -30677.
//       Attempted conversion of '301677-' failed.
//       Converted '301677-' to -301677.
//       Attempted conversion of '$10634' failed.
//       Converted '$10634' to 10634.
//       Converted '10345.00' to 10345.
//       Attempted conversion of '10345.72' failed.
//       Converted '22,593' to 22593.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E03' to 12000.
//       Converted '80c1' to 32961.
//       Attempted conversion of '0x80C1' failed.


Informations de version

.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Pris en charge dans :
Plateformes

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Voir aussi

Référence

Autres ressources