Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Cette page d’aide explique comment Visual Basic utilise des informations de culture pour effectuer des conversions de chaînes et des comparaisons.
Quand utiliser des chaînes spécifiques à la culture
En règle générale, vous devez utiliser des chaînes spécifiques à la culture pour toutes les données présentées aux utilisateurs et lues par ceux-ci, et utiliser des chaînes indépendantes de la culture pour les données internes de votre application.
Par exemple, si votre application demande aux utilisateurs d’entrer une date sous forme de chaîne, il doit s’attendre à ce que les utilisateurs mettent en forme les chaînes en fonction de leur culture et que l’application doit convertir la chaîne de manière appropriée. Si votre application présente ensuite cette date dans son interface utilisateur, elle doit la présenter dans la culture de l’utilisateur.
Toutefois, si l’application charge la date sur un serveur central, elle doit mettre en forme la chaîne en fonction d’une culture spécifique, afin d’éviter toute confusion entre les formats de date potentiellement différents.
Fonctions sensibles à la culture
Toutes les fonctions de conversion de chaîne Visual Basic (à l’exception des fonctions Str et Val) utilisent les paramètres régionaux de l’application pour s'assurer que les conversions et comparaisons sont appropriées pour la culture de l’utilisateur de l’application.
La clé de l’utilisation des fonctions de conversion de chaîne dans les applications qui s’exécutent sur des ordinateurs avec différents paramètres de culture consiste à comprendre quelles fonctions utilisent un paramètre de culture spécifique et qui utilisent le paramètre de culture actuel. Notez que les paramètres de culture de l’application sont, par défaut, hérités des paramètres de culture du système d’exploitation. Pour plus d’informations, consultez Asc, AscWChrChrWFormatHex, Octet fonctions de conversion de type.
Les Str fonctions (convertit les nombres en chaînes) et Val (convertit les chaînes en nombres) n’utilisent pas les informations de culture de l’application lors de la conversion entre des chaînes et des nombres. Au lieu de cela, ils reconnaissent uniquement le point (.) comme séparateur décimal valide. Les analogues culturellement conscients de ces fonctions sont les suivants :
Conversions qui utilisent la culture actuelle. Les fonctions
CStretFormatconvertissent un nombre en une chaîne de caractères, et les fonctionsCDbletCIntconvertissent une chaîne de caractères en un nombre.Conversions qui utilisent une culture spécifique. Chaque objet nombre a une
ToString(IFormatProvider)méthode qui convertit un nombre en chaîne et uneParse(String, IFormatProvider)méthode qui convertit une chaîne en nombre. Par exemple, leDoubletype fournit les méthodes ToString(IFormatProvider) et Parse(String, IFormatProvider).
Pour plus d’informations, consultez Str et Val.
Utilisation d’une culture spécifique
Imaginez que vous développez une application qui envoie une date (mise en forme sous forme de chaîne) à un service Web. Dans ce cas, votre application doit utiliser une culture spécifique pour la conversion de chaînes de caractères. Pour illustrer pourquoi, tenez compte du résultat de l’utilisation de la méthode de ToString() date : si votre application utilise cette méthode pour mettre en forme la date du 4 juillet, 2005, elle retourne « 7/4/2005 12:00:00 » lorsqu’elle est exécutée avec la culture anglaise des États-Unis (en-US), mais elle retourne « 04.07.2005 00:00:00 » lorsqu’elle est exécutée avec la culture allemande (de-DE).
Lorsque vous devez effectuer une conversion de chaîne dans un format de culture spécifique, vous devez utiliser la CultureInfo classe intégrée au .NET Framework. Vous pouvez créer un CultureInfo objet pour une culture spécifique en passant le nom de la culture au CultureInfo constructeur. Les noms de culture pris en charge sont répertoriés dans la page d’aide de la CultureInfo classe.
Vous pouvez également obtenir une instance de la culture invariante à partir de la CultureInfo.InvariantCulture propriété. La culture invariante est basée sur la culture anglaise, mais il y a quelques différences. Par exemple, la culture invariante spécifie une horloge de 24 heures au lieu d’une horloge de 12 heures.
Pour convertir une date en chaîne de la culture, passez l’objet CultureInfo à la méthode ToString(IFormatProvider) de l’objet date. Par exemple, le code suivant affiche « 07/04/2005 00:00:00 », quels que soient les paramètres de culture de l’application.
Dim d As Date = #7/4/2005#
MsgBox(d.ToString(System.Globalization.CultureInfo.InvariantCulture))
Remarque
Les littéraux de date sont toujours interprétés selon la culture anglaise.
Comparaison de chaînes
Il existe deux situations importantes où les comparaisons de chaînes sont nécessaires :
Tri des données à afficher à l’utilisateur. Utilisez des opérations basées sur la culture actuelle afin que les chaînes soient triées correctement.
Déterminer si deux chaînes internes d’application correspondent exactement (généralement à des fins de sécurité). Utilisez des opérations qui ignorent la culture actuelle.
Vous pouvez effectuer les deux types de comparaisons avec la fonction Visual Basic StrComp . Spécifiez l’argument facultatif Compare pour contrôler le type de comparaison : Text pour la plupart des entrées et sorties Binary pour déterminer les correspondances exactes.
La StrComp fonction retourne un entier qui indique la relation entre les deux chaînes comparées en fonction de l’ordre de tri. Une valeur positive pour le résultat indique que la première chaîne est supérieure à la deuxième chaîne. Un résultat négatif indique que la première chaîne est plus petite, et zéro indique l’égalité entre les chaînes.
' Defines variables.
Dim testStr1 As String = "ABCD"
Dim testStr2 As String = "abcd"
Dim testComp As Integer
' The two strings sort equally. Returns 0.
testComp = StrComp(testStr1, testStr2, CompareMethod.Text)
' testStr1 sorts before testStr2. Returns -1.
testComp = StrComp(testStr1, testStr2, CompareMethod.Binary)
' testStr2 sorts after testStr1. Returns 1.
testComp = StrComp(testStr2, testStr1, CompareMethod.Binary)
Vous pouvez également utiliser le partenaire .NET Framework de la fonction StrComp, la méthode String.Compare. Il s’agit d’une méthode statique surchargée de la classe de chaîne de base. L’exemple suivant illustre l’utilisation de cette méthode :
Dim myString As String = "Alphabetical"
Dim secondString As String = "Order"
Dim result As Integer
result = String.Compare(myString, secondString)
Pour contrôler plus finement la façon dont les comparaisons sont effectuées, vous pouvez utiliser des surcharges supplémentaires de la Compare méthode. Avec la String.Compare méthode, vous pouvez utiliser l’argument comparisonType pour spécifier le type de comparaison à utiliser.
Valeur de l’argument comparisonType |
Type de comparaison | Quand utiliser |
|---|---|---|
Ordinal |
Comparaison basée sur les octets de composant des chaînes. | Utilisez cette valeur lors de la comparaison : identifiants sensibles à la casse, paramètres liés à la sécurité ou autres identifiants non linguistiques où les octets doivent correspondre exactement. |
OrdinalIgnoreCase |
Comparaison basée sur les octets de composant des chaînes.OrdinalIgnoreCase utilise les informations de culture invariantes pour déterminer quand deux caractères diffèrent uniquement en majuscules. |
Utilisez cette valeur lors de la comparaison : identifiants insensibles à la casse, paramètres liés à la sécurité et données stockées dans Windows. |
CurrentCulture ou CurrentCultureIgnoreCase |
Comparaison basée sur l’interprétation des chaînes dans la culture actuelle. | Utilisez ces valeurs lors de la comparaison : données affichées à l’utilisateur, la plupart des entrées utilisateur et d’autres données qui nécessitent une interprétation linguistique. |
InvariantCulture ou InvariantCultureIgnoreCase |
Comparaison basée sur l’interprétation des chaînes dans la culture invariante. Cela est différent de Ordinal et OrdinalIgnoreCase, car la culture invariante traite les caractères en dehors de sa plage acceptée comme des caractères invariants équivalents. |
Utilisez ces valeurs uniquement lors de la comparaison des données persistantes ou de l’affichage de données linguistiques pertinentes qui nécessitent un ordre de tri fixe. |
Considérations relatives à la sécurité
Si votre application prend des décisions de sécurité en fonction du résultat d’une opération de comparaison ou de modification de cas, l’opération doit utiliser la String.Compare méthode et passer Ordinal ou OrdinalIgnoreCase pour l’argument comparisonType .