Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a súgólap azt ismerteti, hogyan használja a Visual Basic a kulturális adatokat a sztringátalakítások és -összehasonlítások végrehajtásához.
Mikor érdemes használni Culture-Specific karakterláncokat?
Általában kultúraspecifikus sztringeket kell használnia a felhasználók számára megjelenített és beolvasott összes adathoz, és kulturális invariáns sztringeket kell használnia az alkalmazás belső adataihoz.
Ha például az alkalmazás arra kéri a felhasználókat, hogy adjanak meg egy dátumot sztringként, elvárja, hogy a felhasználók a saját kultúrájuknak megfelelően formázhassák a sztringeket, és az alkalmazásnak megfelelően kell átalakítania a sztringet. Ha az alkalmazás ezt a dátumot a felhasználói felületén jeleníti meg, akkor azt a felhasználó kulturális környezetében kell bemutatnia.
Ha azonban az alkalmazás feltölti a dátumot egy központi kiszolgálóra, a sztringet egy adott kultúra szerint kell formáznia, hogy megakadályozza a potenciálisan eltérő dátumformátumok közötti összetévesztést.
Culture-Sensitive függvények
Az összes Visual Basic karakterlánc-konvertálási függvény (kivéve a Str és Val függvényeket) az alkalmazás kulturális információit használja annak biztosítására, hogy a konvertálások és összehasonlítások megfelelőek legyenek az alkalmazás felhasználójának kultúrájához.
A különböző kulturális beállításokkal rendelkező számítógépeken futó alkalmazásokban a sztringkonvertálási függvények sikeres használatához az a kulcs, hogy megismerjük, mely függvények használnak egy adott kulturális beállítást, és amelyek az aktuális kulturális beállítást használják. Figyelje meg, hogy az alkalmazás kulturális beállításai alapértelmezés szerint az operációs rendszer kulturális beállításaitól öröklődnek. További információért lásd: Asc, AscW, Chr, ChrW, Format, Hex, Oct, és Type conversion functions.
A Str (számokat sztringekké konvertáló) és Val (sztringeket számokká konvertáló) függvények nem használják az alkalmazás kulturális adatait a sztringek és számok közötti konvertáláskor. Ehelyett csak az időszakot (.) ismerik fel érvényes tizedeselválasztóként. Ezeknek a függvényeknek a kulturálisan tudatos analógjai a következők:
Az aktuális kultúrát használó konverziók. A
CStrfüggvényekFormategy számot sztringgé alakítanak át, aCDblfüggvények pedigCIntszámmá alakítják a sztringet.Egy adott kultúrát használó konverziók. Minden számobjektum rendelkezik egy
ToString(IFormatProvider)metódussal, amely egy számot sztringgé alakít át, és egy olyan metódustParse(String, IFormatProvider), amely számmá konvertál egy sztringet. A típus például aDoublemetódusokat és ToString(IFormatProvider) a Parse(String, IFormatProvider) metódusokat tartalmazza.
További információ: Str és Val.
Adott kultúra használata
Tegyük fel, hogy olyan alkalmazást fejleszt, amely dátumot (sztringként formázva) küld egy webszolgáltatásnak. Ebben az esetben az alkalmazásnak egy adott kultúrát kell használnia a karakterláncok átalakításához. Annak szemléltetéséhez, hogy miért, fontolja meg a dátum ToString() metódusának eredményét: Ha az alkalmazás ezt a módszert használja a július 4-i dátum formázásához, 2005-ben a "2005.07.04. 12:00:00" értéket adja vissza, amikor az Egyesült Államok angol (en-US) kultúrájával fut, de a "04.07.2005 00:00:00" értéket adja vissza, ha a német (de-DE) kultúrával fut.
Ha sztringkonvertálást kell végrehajtania egy adott kulturális formátumban, a CultureInfo .NET-keretrendszerbe beépített osztályt kell használnia. Létrehozhat egy új CultureInfo objektumot egy adott kultúrához úgy, hogy átadja a kultúra nevét a CultureInfo konstruktornak. A támogatott kulturális nevek az CultureInfo osztály súgóoldalán jelennek meg.
Másik lehetőségként lekérheti az invariáns kultúra egy példányát a CultureInfo.InvariantCulture tulajdonságból. Az invariáns kultúra az angol kultúrán alapul, de vannak különbségek. Az invariáns kultúra például 12 óra helyett 24 órás órát ad meg.
A dátum kultúrához tartozó karakterlánccá alakításához adja át az CultureInfo objektumot a dátumobjektum ToString(IFormatProvider) metódusának. A következő kód például a "2005.04.07. 00:00:00" értéket jeleníti meg az alkalmazás kulturális beállításaitól függetlenül.
Dim d As Date = #7/4/2005#
MsgBox(d.ToString(System.Globalization.CultureInfo.InvariantCulture))
Megjegyzés:
A dátumkonstansok mindig az angol kultúra szerint vannak értelmezve.
Sztringek összehasonlítása
Két fontos helyzet van, amikor karakterlánc-összehasonlításra van szükség.
Adatok rendezése a felhasználó számára való megjelenítéshez. Az aktuális kultúra alapján végezzen eljárásokat, hogy a karakterláncok megfelelően rendeződjenek.
Annak meghatározása, hogy két alkalmazás belső sztringje pontosan egyezik-e (általában biztonsági okokból). Olyan műveleteket használjon, amelyek figyelmen kívül hagyják a jelenlegi kultúrát.
Mindkét típusú összehasonlítást elvégezheti a Visual Basic StrComp függvénnyel. Adja meg a választható Compare argumentumot az összehasonlítás típusának szabályozásához: Text a legtöbb bemenet és kimenet Binary esetében a pontos egyezések meghatározásához.
A StrComp függvény egy egész számot ad vissza, amely a rendezési sorrend alapján jelzi a két összehasonlított sztring közötti kapcsolatot. Az eredmény pozitív értéke azt jelzi, hogy az első sztring nagyobb, mint a második sztring. A negatív eredmény azt jelzi, hogy az első sztring kisebb, a nulla pedig a sztringek közötti egyenlőséget jelzi.
' 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)
A függvény .NET-keretrendszerbeli partnerét, a StrComp metódust is használhatja String.Compare . Ez az alapsztringosztály statikus, túlterhelt metódusa. Az alábbi példa a metódus használatát mutatja be:
Dim myString As String = "Alphabetical"
Dim secondString As String = "Order"
Dim result As Integer
result = String.Compare(myString, secondString)
Az összehasonlítások végrehajtásának finomabb szabályozásához a módszer további túlterheléseit is használhatja Compare . A metódussal String.Compare az comparisonType argumentum használatával megadhatja, hogy milyen típusú összehasonlítást használjon.
comparisonType paraméter értéke |
Összehasonlítás típusa | Mikor érdemes használni? |
|---|---|---|
Ordinal |
Összehasonlítás a sztringek összetevőinek bájtjai alapján. | Ezt az értéket akkor használja, ha összehasonlítja a kis- és nagybetűket, a biztonsági beállításokat vagy más nem nyelvi azonosítókat, ahol a bájtoknak pontosan meg kell egyeznie. |
OrdinalIgnoreCase |
Összehasonlítás a sztringek összetevőinek bájtjai alapján.OrdinalIgnoreCase az invariáns kultúra információi alapján határozza meg, hogy két karakter mikor tér el csak a nagybetűs megjelenítésben. |
Használja ezt az értéket a kis- és nagybetűk megkülönböztetése, a biztonsági beállítások és a Windowsban tárolt adatok összehasonlításakor. |
CurrentCulture vagy CurrentCultureIgnoreCase |
Összehasonlítás a sztringek jelenlegi kultúrában való értelmezése alapján. | Ezeket az értékeket a következő értékek összehasonlításakor használhatja: a felhasználóval megjelenített adatok, a legtöbb felhasználói bemenet és más, nyelvi értelmezést igénylő adatok. |
InvariantCulture vagy InvariantCultureIgnoreCase |
Összehasonlítás a sztringek invariáns kultúrában való értelmezése alapján. Ez eltér az Ordinal és OrdinalIgnoreCase, mivel az invariáns kultúra az elfogadott tartományon kívüli karaktereket egyenértékű invariáns karakterként kezeli. |
Ezeket az értékeket csak akkor használja, ha a tartós adatokat hasonlítja össze, vagy olyan nyelvi szempontból releváns adatokat jelenít meg, amelyek rögzített rendezési sorrendet igényelnek. |
Biztonsági szempontok
Ha az alkalmazás összehasonlítási vagy esetmódosítási művelet eredménye alapján hoz biztonsági döntéseket, akkor a műveletnek a String.Compare metódust kell használni, és az Ordinal argumentumnak átadnia kell OrdinalIgnoreCase vagy comparisonType.