Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Op deze Help-pagina wordt beschreven hoe Visual Basic cultuurgegevens gebruikt om tekenreeksconversies en vergelijkingen uit te voeren.
Wanneer Culture-Specific tekenreeksen gebruiken
Normaal gesproken moet u cultuurspecifieke tekenreeksen gebruiken voor alle gegevens die worden gepresenteerd aan en gelezen door gebruikers, en cultuur-invariante tekenreeksen gebruiken voor de interne gegevens van uw toepassing.
Als uw toepassing bijvoorbeeld gebruikers vraagt een datum in te voeren als een tekenreeks, moeten gebruikers verwachten dat ze de tekenreeksen opmaken op basis van hun cultuur en dat de toepassing de tekenreeks op de juiste manier moet converteren. Als uw toepassing die datum vervolgens weergeeft in de gebruikersinterface, moet deze worden weergegeven in de cultuur van de gebruiker.
Als de toepassing echter de datum uploadt naar een centrale server, moet deze de tekenreeks opmaken op basis van één specifieke cultuur, om verwarring tussen mogelijk verschillende datumnotaties te voorkomen.
Culture-Sensitive Functions
Alle visual Basic-functies voor tekenreeksconversie (met uitzondering van de Str en Val functies) gebruiken de cultuurinformatie van de toepassing om ervoor te zorgen dat de conversies en vergelijkingen geschikt zijn voor de cultuur van de gebruiker van de toepassing.
De sleutel voor het gebruik van tekenreeksconversiefuncties in toepassingen die worden uitgevoerd op computers met verschillende cultuurinstellingen is om te begrijpen welke functies een specifieke cultuurinstelling gebruiken en welke de huidige cultuurinstelling gebruiken. U ziet dat de cultuurinstellingen van de toepassing standaard worden overgenomen van de cultuurinstellingen van het besturingssysteem. Voor meer informatie, zie Asc, AscW, Chr, ChrW, Format, Hex, Oct, en typeconversiefuncties.
De Str functies (converteert getallen naar tekenreeksen) en Val (converteert tekenreeksen naar getallen) gebruiken de cultuurgegevens van de toepassing niet bij het converteren tussen tekenreeksen en getallen. In plaats daarvan herkennen ze alleen de punt (.) als een geldig decimale scheidingsteken. De cultureel bewuste analogen van deze functies zijn:
Conversies die gebruikmaken van de huidige cultuur. De
CStrfuncties converterenFormateen getal naar een tekenreeks en deCDblfunctiesCIntconverteren een tekenreeks naar een getal.Conversies die een specifieke cultuur gebruiken. Elk getalobject heeft een
ToString(IFormatProvider)methode waarmee een getal wordt geconverteerd naar een tekenreeks en eenParse(String, IFormatProvider)methode waarmee een tekenreeks wordt geconverteerd naar een getal. Het typeDoublebiedt bijvoorbeeld de methoden ToString(IFormatProvider) en Parse(String, IFormatProvider).
Zie voor meer informatie Str en Val.
Een specifieke cultuur gebruiken
Stel dat u een toepassing ontwikkelt waarmee een datum (opgemaakt als een tekenreeks) naar een webservice wordt verzonden. In dit geval moet uw toepassing een specifieke cultuur gebruiken voor de tekenreeksconversie. Als u wilt laten zien waarom, kunt u het resultaat van de datum ToString() methode overwegen: als uw toepassing die methode gebruikt om de datum 4 juli 2005 op te maken, retourneert het "7/4/2005 12:00:00 AM" wanneer het wordt uitgevoerd met de Engelse (en-US) cultuurinstelling, maar het retourneert "04.07.2005 00:00:00" wanneer het wordt uitgevoerd met de Duitse (de-DE) cultuurinstelling.
Wanneer u een tekenreeksconversie in een specifieke cultuurindeling moet uitvoeren, moet u de CultureInfo klasse gebruiken die is ingebouwd in .NET Framework. U kunt een nieuw CultureInfo object voor een specifieke cultuur maken door de naam van de cultuur door te geven aan de CultureInfo constructor. De ondersteunde cultuurnamen worden weergegeven op de help-pagina van de CultureInfo klas.
U kunt ook een instantie van de invariante cultuur uit de CultureInfo.InvariantCulture eigenschap ophalen. De invariante cultuur is gebaseerd op de Engelse cultuur, maar er zijn enkele verschillen. De invariante cultuur geeft bijvoorbeeld een 24-uurs klok op in plaats van een 12-uurs klok.
Om een datum om te zetten naar de tekenreeks van de cultuur, geeft u het CultureInfo object door aan de methode van het ToString(IFormatProvider) datumobject. In de volgende code wordt bijvoorbeeld '07/04/2005 00:00:00' weergegeven, ongeacht de cultuurinstellingen van de toepassing.
Dim d As Date = #7/4/2005#
MsgBox(d.ToString(System.Globalization.CultureInfo.InvariantCulture))
Opmerking
Datumliteralen worden altijd geïnterpreteerd volgens de Engelstalige cultuur.
Tekenreeksen vergelijken
Er zijn twee belangrijke situaties waarin tekenreeksvergelijkingen nodig zijn:
Gegevens sorteren om weer te geven aan de gebruiker. Gebruik bewerkingen die passen bij de huidige cultuur, zodat de tekenreeksen correct worden gesorteerd.
Bepalen of twee toepassingsinterwendige tekenreeksen exact overeenkomen (meestal voor beveiligingsdoeleinden). Gebruik bewerkingen die de huidige cultuur negeren.
U kunt beide typen vergelijkingen uitvoeren met de functie Visual Basic StrComp . Geef het optionele Compare argument op om het type vergelijking te bepalen: Text voor de meeste invoer en uitvoer Binary voor het bepalen van exacte overeenkomsten.
De StrComp functie retourneert een geheel getal dat de relatie aangeeft tussen de twee vergeleken tekenreeksen op basis van de sorteervolgorde. Een positieve waarde voor het resultaat geeft aan dat de eerste tekenreeks groter is dan de tweede tekenreeks. Een negatief resultaat geeft aan dat de eerste tekenreeks kleiner is en nul geeft gelijkheid aan tussen de tekenreeksen.
' 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)
U kunt ook de .NET Framework-partner van de StrComp functie, de String.Compare methode, gebruiken. Dit is een statische, overbelaste methode van de basisreeksklasse. In het volgende voorbeeld ziet u hoe deze methode wordt gebruikt:
Dim myString As String = "Alphabetical"
Dim secondString As String = "Order"
Dim result As Integer
result = String.Compare(myString, secondString)
Voor een nauwkeurigere controle over hoe de vergelijkingen worden uitgevoerd, kunt u extra overbelastingen van de Compare methode gebruiken. Met de String.Compare methode kunt u het comparisonType argument gebruiken om op te geven welk type vergelijking u wilt gebruiken.
Waarde voor comparisonType argument |
Type van vergelijking | Wanneer te gebruiken |
|---|---|---|
Ordinal |
Vergelijking op basis van de componentbytes van tekenreeksen. | Gebruik deze waarde bij het vergelijken: hoofdlettergevoelige id's, beveiligingsinstellingen of andere niet-taalkundige id's waarbij de bytes exact moeten overeenkomen. |
OrdinalIgnoreCase |
Vergelijking op basis van de componentbytes van tekenreeksen.OrdinalIgnoreCase gebruikt de invariante cultuurgegevens om te bepalen wanneer twee tekens alleen in hoofdlettergebruik verschillen. |
Gebruik deze waarde bij het vergelijken van: niet-hoofdlettergevoelige id's, beveiligingsinstellingen en gegevens die zijn opgeslagen in Windows. |
CurrentCulture of CurrentCultureIgnoreCase |
Vergelijking op basis van de interpretatie van tekenreeksen in de huidige cultuur. | Gebruik deze waarden bij het vergelijken: gegevens die worden weergegeven aan de gebruiker, de meeste gebruikersinvoer en andere gegevens waarvoor taalkundige interpretatie is vereist. |
InvariantCulture of InvariantCultureIgnoreCase |
Vergelijking op basis van de interpretatie van de string in de invariant cultuur. Dit verschilt van de Ordinal en OrdinalIgnoreCase, omdat de invariante cultuur tekens buiten het geaccepteerde bereik behandelt als gelijkwaardige invariante tekens. |
Gebruik deze waarden alleen wanneer u persistente gegevens vergelijkt of taalkundige relevante gegevens weergeeft waarvoor een vaste sorteervolgorde is vereist. |
Beveiligingsoverwegingen
Als uw toepassing beveiligingsbeslissingen neemt op basis van het resultaat van een vergelijkings- of casewijzigingsbewerking, moet de bewerking de String.Compare methode gebruiken en het Ordinal argument doorgeven, waarbij OrdinalIgnoreCase of comparisonType wordt gekozen.