Wpływ kultury na ciągi w Visual Basic

Ta strona pomocy omówiono jak Visual Basic zastosowań kultury, informacji, aby wykonać konwersji ciągów i porównań.

Kiedy używać kultury określonych ciągów

Należy zazwyczaj używają ciągów kultury specyficzne dla wszystkich danych przedstawionych na i odczytać użytkowników i używają ciągów niezmienny kultury dla wewnętrznych danych aplikacji.

Na przykład jeśli aplikacja żąda użytkownikom wprowadzanie daty jako ciąg znaków, należy oczekiwać, że użytkownicy mogli formatować ciągi zgodnie z ich kultury i stosowania powinny odpowiednio przekonwertować ciągu.Jeśli aplikacja następnie przedstawia datę w interfejsie użytkownika, to powinna przedstawić kultury użytkownika.

Jednakże jeśli aplikacja zostanie przesłany daty do centralnego serwera, należy sformatować ciąg zgodnie z jedną określoną kulturę, aby uniknąć zamieszania między potencjalnie różnych formatów daty.

Funkcje zależne od kultury

Wszystkie Visual Basic funkcje konwersji ciągu (z wyjątkiem Str i Val funkcje) Użyj informacji kultury aplikacji, aby upewnić się, że program konwersje i porównania są odpowiednie dla kultury użytkownika aplikacji.

Pomyślnie za pomocą funkcji konwersji ciągów w aplikacji uruchamianych na komputerach z ustawieniami różne kultury jest zrozumienie, użyj ustawienia określonej kultury, które funkcje i które używają bieżące ustawienie kultury.Należy zauważyć, że ustawienia kultury aplikacji są domyślnie dziedziczone z ustawienia kultury systemu operacyjnego.For more information, see Asc, AscW, Chr, ChrW, Format, Hex, Oct, and Funkcje konwersji typu (Visual Basic).

Str (Konwertuje liczby na ciągi znaków) i Val (konwertuje ciągi do liczb) funkcji należy używać aplikacji kultury informacji podczas konwersji między ciągi i liczby.Zamiast tego one rozpoznaje tylko kropkę (.) jako prawidłowy separator dziesiętny.Analogi kulturowym świadomi tych funkcji są:

  • **Konwersje używających bieżącej kultury.**CStr i Format funkcji konwertuje liczby na ciąg znaków oraz CDbl i CInt funkcje przekonwertować ciąg na liczbę.

  • Konwersje, korzystających z określonej kultury. Każdy numer obiekt ma ToString(IFormatProvider) metodę, która konwertuje liczby na ciąg znaków, i Parse(String, IFormatProvider) metodę, która konwertuje ciąg znaków na liczbę.Na przykład Double zawiera typ ToString(IFormatProvider) i Parse(String, IFormatProvider) metody.

Aby uzyskać więcej informacji, zobacz Str i Val.

Przy użyciu określonej kultury

Wyobraźmy sobie, opracowywania aplikacji, która wysyła datę (sformatowaną jako ciąg) do usługi sieci Web.W przypadku aplikacji należy użyć określonej kultury do konwersji ciągów.Aby zilustrować dlaczego, rozważmy wyniki przy użyciu daty ToString metoda: Jeśli aplikacja używa tej metody do formatowania z dnia 4 lipca 2005 r. zwraca "4/7/2005 12: 00: 00 AM" kiedy są uruchamiane z kulturą angielski USA (en US), ale zwraca "dnia 04.07.2005 00: 00: 00" kiedy są uruchamiane z kulturą niemiecki (de-DE).

Gdy konieczne jest wykonanie konwersji ciągów w formacie określoną kulturę, należy użyć CultureInfo klasy, która jest wbudowana w .NET Framework.Można utworzyć nowy CultureInfo obiektu dla określonej kultury, przekazując nazwę kultury #ctor konstruktora.Nazwy kultury obsługiwane są wymienione w CultureInfo stronę pomocy klasy.

Alternatywnie, można pobrać wystąpienie kulturą niezmienną z CultureInfo.InvariantCulture właściwości.Niezmienna kultura opiera się na angielski kultury, ale istnieją pewne różnice.Na przykład kulturą niezmienną określa zegara 24-godzinnego, zamiast w formacie 12-godzinnym.

Aby przekonwertować datę na ciąg kultury, przekazać CultureInfo obiektu do obiektu Data ToString(IFormatProvider) metody.Na przykład, następujący kod wyświetla "04/07/2005 00: 00: 00", niezależnie od ustawienia kultury aplikacji.

Dim d As Date = #7/4/2005#
MsgBox(d.ToString(System.Globalization.CultureInfo.InvariantCulture))

[!UWAGA]

Literały dat są zawsze interpretowane zgodnie z angielskim kultury.

Porównywanie ciągów

Istnieją dwie ważne sytuacje, gdzie są potrzebne porównaniach ciągów znaków:

  • Sortowanie danych do wyświetlenia dla użytkownika. Użyj operacji opartych na bieżący kultury, więc ciągi posortować, odpowiednio.

  • Określenia, jeśli dwa ciągi wewnętrznego stosowania dokładnie odpowiadać (zazwyczaj dla celów bezpieczeństwa). Za pomocą operacji, które nie brać pod uwagę bieżący kultury.

Można wykonać obu typów porównań z Visual BasicStrComp funkcji. Określić opcjonalny Compare argument, aby kontrolować typ porównania: Text dla większości dane wejściowe i wyjściowe Binary do określenia dokładne odpowiedniki.

StrComp Funkcja zwraca liczbę całkowitą, która wskazuje relację między dwa ciągi porównaniu oparta na kolejności sortowania.Wartość dodatnia wynik wskazuje, że pierwszy ciąg jest większa niż drugi ciąg.Wynik negatywny wskazuje pierwszy ciąg jest mniejszy, a wartość zero wskazuje równości ciągi.

' 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)

Można również użyć .NET Framework partnerem StrComp funkcji, String.Compare metody.To jest statyczny przeciążonej metody klasy podstawowej ciąg.Poniższy przykład ilustruje, jak ta metoda jest używana:

Dim myString As String = "Alphabetical" 
Dim secondString As String = "Order" 
Dim result As Integer
result = String.Compare(myString, secondString)

Lepiej kontrolować sposób porównanie są wykonywane, można użyć dodatkowych przeciążenia Compare metody.Z String.Compare metody, można użyć comparisonType argument, aby określić, jaki rodzaj porównywania.

Wartość dla comparisonType argument

Typ porównania

Kiedy używać

Ordinal

Porównanie oparte na ciągi składnik bajtów.

Użyj tej wartości podczas porównywania: identyfikatory rozróżniana wielkość liter, ustawienia związane z zabezpieczeniami lub innych identyfikatorów językowej, gdzie bajty musi dokładnie odpowiadać.

OrdinalIgnoreCase

Porównanie oparte na ciągi składnik bajtów.

OrdinalIgnoreCaseużywa informacji kulturą niezmienną ustalić, kiedy dwa znaki różnią się tylko w przypadku użycia wielkich liter.

Użyj tej wartości podczas porównywania: identyfikatorów uwzględniających wielkość liter, ustawienia związane z zabezpieczeniami i danych przechowywanych w systemie Windows.

CurrentCulturelubCurrentCultureIgnoreCase

Porównanie na podstawie tych ciągów interpretacji w bieżącej kultury.

Użyj tych wartości, porównując: dane wyświetlane dla użytkownika, większość danych wejściowych użytkownika i inne dane, które wymaga językowej interpretacji.

InvariantCulturelubInvariantCultureIgnoreCase

Porównanie na podstawie tych ciągów interpretacji w Niezmienna kultura.

To jest inny niż Ordinal i OrdinalIgnoreCase, ponieważ kulturą niezmienną traktuje znaki poza jego zakresem akceptowanych jako równoważne niezmienny znaków.

Wartości te należy używać tylko podczas porównywania danych utrzymujących lub wyświetlanie językowo odpowiednich wymagającej stałej sortowania.

Zagadnienia dotyczące zabezpieczeń

Jeśli aplikacja podejmuje decyzje dotyczące zabezpieczeń, w oparciu o wyniku porównania lub operacji w przypadku zmiany, a następnie należy użyć operacji String.Compare metody i przebiegu Ordinal lub OrdinalIgnoreCase do comparisonType argument.

Zobacz też

Informacje

Funkcje konwersji typu (Visual Basic)

CultureInfo

Inne zasoby

Wprowadzenie do ciągów w Visual Basic