Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Auf dieser Hilfeseite wird erläutert, wie Visual Basic Kulturinformationen verwendet, um Zeichenfolgenkonvertierungen und Vergleiche durchzuführen.
Wann man Culture-Specific Zeichenfolgen verwendet
In der Regel sollten Sie kulturspezifische Zeichenfolgen für alle Daten verwenden, die benutzern präsentiert und gelesen werden, und kulturinvariante Zeichenfolgen für die internen Daten Ihrer Anwendung verwenden.
Wenn Ihre Anwendung beispielsweise Benutzer auffordern, ein Datum als Zeichenfolge einzugeben, sollte davon ausgegangen werden, dass Benutzer die Zeichenfolgen entsprechend ihrer Kultur formatieren, und die Anwendung sollte die Zeichenfolge entsprechend konvertieren. Wenn Ihre Anwendung dieses Datum dann in der Benutzeroberfläche angibt, sollte es in der Kultur des Benutzers angezeigt werden.
Wenn die Anwendung das Datum jedoch auf einen zentralen Server hochlädt, sollte sie die Zeichenfolge entsprechend einer bestimmten Kultur formatieren, um Verwirrung zwischen potenziell unterschiedlichen Datumsformaten zu vermeiden.
Kulturabhängige Funktionen
Alle Visual Basic-Zeichenfolgenkonvertierungsfunktionen (mit Ausnahme der Str und Val Funktionen) verwenden die Kulturinformationen der Anwendung, um sicherzustellen, dass die Konvertierungen und Vergleiche für die Kultur des Benutzers der Anwendung geeignet sind.
Der Schlüssel zur erfolgreichen Verwendung von Zeichenfolgenkonvertierungsfunktionen in Anwendungen, die auf Computern mit unterschiedlichen Kultureinstellungen ausgeführt werden, besteht darin, zu verstehen, welche Funktionen eine bestimmte Kultureinstellung verwenden und welche die aktuelle Kultureinstellung verwenden. Beachten Sie, dass die Kultureinstellungen der Anwendung standardmäßig von den Kultureinstellungen des Betriebssystems geerbt werden. Weitere Informationen finden Sie unter Asc, AscW, Chr, ChrW, Format, Hex, Oct und Typkonvertierungsfunktionen.
Die Str Funktionen (konvertiert Zahlen in Zeichenfolgen) und Val (konvertiert Zeichenfolgen in Zahlen) verwenden beim Konvertieren zwischen Zeichenfolgen und Zahlen keine Kulturinformationen der Anwendung. Stattdessen erkennen sie nur den Punkt (.) als gültiges Dezimaltrennzeichen. Die kulturbewussten Analoga dieser Funktionen sind:
Konvertierungen, die die aktuelle Kultur verwenden. Die
CStrFunktionenFormatkonvertieren eine Zahl in eine Zeichenfolge, und dieCDblFunktionenCIntkonvertieren eine Zeichenfolge in eine Zahl.Konvertierungen, die eine bestimmte Kultur verwenden. Jedes Zahlenobjekt verfügt über eine
ToString(IFormatProvider)Methode, die eine Zahl in eine Zeichenfolge konvertiert, und eineParse(String, IFormatProvider)Methode, die eine Zeichenfolge in eine Zahl konvertiert. Der Typ stellt z. B. dieDouble- und ToString(IFormatProvider)-Methoden bereit.
Weitere Informationen finden Sie unter Str und Val.
Verwenden einer bestimmten Kultur
Stellen Sie sich vor, Sie entwickeln eine Anwendung, die ein Datum (formatiert als Zeichenfolge) an einen Webdienst sendet. In diesem Fall muss Ihre Anwendung eine bestimmte Kultur für die Zeichenfolgenkonvertierung verwenden. Um den Grund zu veranschaulichen, sollten Sie das Ergebnis der Verwendung der ToString()-Methode für das Datum in Betracht ziehen: Wenn Ihre Anwendung diese Methode zum Formatieren des Datums 4. Juli 2005 verwendet, gibt sie „7/4/2005 12:00:00 AM“ zurück, wenn sie mit der Kultur „US-Englisch (en-US)“ ausgeführt wird, aber „04.07.2005 00:00:00“, wenn sie mit der Kultur „Deutsch (de-DE)“ ausgeführt wird.
Wenn Sie eine Zeichenfolgenkonvertierung in einem bestimmten Kulturformat durchführen müssen, sollten Sie die in CultureInfo integrierte Klasse des .NET Frameworks verwenden. Sie können ein neues CultureInfo Objekt für eine bestimmte Kultur erstellen, indem Sie den Namen der Kultur an den CultureInfo Konstruktor übergeben. Die unterstützten Kulturnamen werden auf der Hilfeseite der CultureInfo Klasse aufgeführt.
Alternativ können Sie eine Instanz der invarianten Kultur aus der CultureInfo.InvariantCulture Eigenschaft abrufen. Die invariante Kultur basiert auf der englischen Kultur, aber es gibt einige Unterschiede. Die invariante Kultur gibt z. B. eine 24-Stunden-Uhr anstelle einer 12-Stunden-Uhr an.
Um ein Datum in die Zeichenfolge der Kultur zu konvertieren, übergeben Sie das CultureInfo Objekt an die Methode des Datumsobjekts ToString(IFormatProvider) . Der folgende Code zeigt beispielsweise "07/04/2005 00:00:00", unabhängig von den Kultureinstellungen der Anwendung.
Dim d As Date = #7/4/2005#
MsgBox(d.ToString(System.Globalization.CultureInfo.InvariantCulture))
Hinweis
Datumsliterale werden immer entsprechend der englischen Kultur interpretiert.
Vergleichen von Zeichenfolgen
Es gibt zwei wichtige Situationen, in denen Zeichenfolgenvergleiche erforderlich sind:
Sortieren von Daten für die Anzeige für den Benutzer. Verwenden von Vorgängen basierend auf der aktuellen Kultur, damit die Zeichenfolgen entsprechend sortiert werden.
Ermitteln, ob zwei anwendungsinterne Zeichenfolgen exakt übereinstimmen (in der Regel für Sicherheitszwecke). Verwenden Sie Vorgänge, die die aktuelle Kultur ignorieren.
Sie können beide Arten von Vergleichen mit der Visual Basic-Funktion StrComp ausführen. Geben Sie das optionale Compare Argument an, um den Typ des Vergleichs zu steuern: Text Für die meisten Eingaben und Ausgaben Binary zum Bestimmen exakter Übereinstimmungen.
Die StrComp Funktion gibt eine ganze Zahl zurück, die die Beziehung zwischen den beiden verglichenen Zeichenfolgen basierend auf der Sortierreihenfolge angibt. Ein positiver Wert für das Ergebnis gibt an, dass die erste Zeichenfolge größer als die zweite Zeichenfolge ist. Ein negatives Ergebnis gibt an, dass die erste Zeichenfolge kleiner ist und Null die Gleichheit zwischen den Zeichenfolgen angibt.
' 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)
Sie können auch den .NET Framework-Partner der StrComp Funktion, der String.Compare Methode, verwenden. Dies ist eine statische, überladene Methode der Basiszeichenfolgenklasse. Das folgende Beispiel veranschaulicht, wie diese Methode verwendet wird:
Dim myString As String = "Alphabetical"
Dim secondString As String = "Order"
Dim result As Integer
result = String.Compare(myString, secondString)
Um genauer zu steuern, wie die Vergleiche durchgeführt werden, können Sie zusätzliche Überladungen der Compare Methode verwenden. Mit der String.Compare Methode können Sie das comparisonType Argument verwenden, um anzugeben, welche Art von Vergleich verwendet werden soll.
Wert für comparisonType Argument |
Vergleichstyp | Wann verwenden |
|---|---|---|
Ordinal |
Vergleich basierend auf den Bytes der Komponenten von Zeichenfolgen. | Mit diesem Wert können Sie Folgendes vergleichen: Bezeichner ohne Berücksichtigung der Groß-/Kleinschreibung, Sicherheitseinstellungen oder andere nicht linguistische Bezeichner, deren Bytes genau übereinstimmen müssen. |
OrdinalIgnoreCase |
Vergleich basierend auf den Bytes der Komponenten von Zeichenfolgen.OrdinalIgnoreCase verwendet die invarianten Kulturinformationen, um zu bestimmen, wann sich zwei Zeichen nur in der Großschreibung unterscheiden. |
Verwenden Sie diesen Wert beim Vergleichen von nicht case-sensitiven Bezeichnern, sicherheitsbezogenen Einstellungen und in Windows gespeicherten Daten. |
CurrentCulture oder CurrentCultureIgnoreCase |
Vergleich basierend auf der Interpretation der Zeichenfolgen in der aktuellen Kultur. | Verwenden Sie beim Vergleichen diese Werte: Daten, die dem Benutzer angezeigt werden, die meisten Benutzereingaben und andere Daten, die eine sprachliche Interpretation erfordern. |
InvariantCulture oder InvariantCultureIgnoreCase |
Vergleich basierend auf der Interpretation der Zeichenfolgen in der invarianten Kultur. Dies unterscheidet sich von dem Ordinal und OrdinalIgnoreCase, da die invariante Kultur Zeichen außerhalb des akzeptierten Bereichs als gleichwertige invariante Zeichen behandelt. |
Verwenden Sie diese Werte nur, wenn Sie permanente Daten vergleichen oder linguistisch relevante Daten anzeigen, die eine feste Sortierreihenfolge erfordern. |
Sicherheitsüberlegungen
Wenn Ihre Anwendung Sicherheitsentscheidungen basierend auf dem Ergebnis eines Vergleichs- oder Falländerungsvorgangs trifft, sollte der Vorgang die String.Compare Methode verwenden und Ordinal oder OrdinalIgnoreCase als comparisonType Argument übergeben.