Влияние языка и региональных параметров на строки в Visual BasicHow Culture Affects Strings in Visual Basic

Эта страница справки описывается, как Visual Basic использует язык и региональные параметры для выполнения преобразования строк и сравнения.This Help page discusses how Visual Basic uses culture information to perform string conversions and comparisons.

Когда следует использовать строки, зависящие от языка и региональных параметровWhen to Use Culture-Specific Strings

Как правило следует использовать строки, зависящие от языка и региональных параметров для всех данных, адресованных и пользователям и использовать строки языка и региональных параметров для внутренних данных приложения.Typically, you should use culture-specific strings for all data presented to and read from users, and use culture-invariant strings for your application's internal data.

Например если приложение запрашивает пользователям вводить дату в виде строки, следует ожидать, что пользователи форматирования строк в соответствии с их язык и региональные параметры и приложения должны соответствующим образом преобразовать строку.For example, if your application asks users to enter a date as a string, it should expect users to format the strings according to their culture, and the application should convert the string appropriately. Если приложение затем представляет эти данные в своем пользовательском интерфейсе, оно должно представлять их в язык и региональные параметры пользователя.If your application then presents that date in its user interface, it should present it in the user's culture.

Тем не менее если приложение загружает данные на центральный сервер, следует отформатировать строку в соответствии с одного определенного языка и региональных параметров, чтобы избежать путаницы между потенциально различные форматы даты.However, if the application uploads the date to a central server, it should format the string according to one specific culture, to prevent confusion between potentially different date formats.

Функции с учетом языка и региональных параметровCulture-Sensitive Functions

Все функции преобразования строк Visual Basic (за исключением Str и Val функций) используйте информацию о языке и региональных параметрах, чтобы убедиться, что преобразования и сравнения подходят для языка и региональных параметров приложения пользователь.All of the Visual Basic string-conversion functions (except for the Str and Val functions) use the application's culture information to make sure that the conversions and comparisons are appropriate for the culture of the application's user.

Ключ успешно с помощью функции преобразования строк в приложениях, работающих на компьютерах с помощью различных языковых и региональных параметров — понять, какие функции использовать региональных параметров, а какие текущего языка и региональных параметров.The key to successfully using string-conversion functions in applications that run on computers with different culture settings is to understand which functions use a specific culture setting, and which use the current culture setting. Обратите внимание на то, что параметры языка и региональных параметров приложения по умолчанию, унаследованные от параметров языка и региональных параметров операционной системы.Notice that the application's culture settings are, by default, inherited from the culture settings of the operating system. Дополнительные сведения см. в разделе Asc, AscW, Chr, ChrW, Format, Hex, Oct, и функции преобразования типов.For more information, see Asc, AscW, Chr, ChrW, Format, Hex, Oct, and Type Conversion Functions.

Str (Преобразование чисел в строки) и Val функции (преобразование строк в числа) не используют информацию о языке и региональных параметрах, при преобразовании между строками и числами.The Str (converts numbers to strings) and Val (converts strings to numbers) functions do not use the application's culture information when converting between strings and numbers. Вместо этого они распознает только точку (.) в качестве допустимого десятичного разделителя.Instead, they recognize only the period (.) as a valid decimal separator. Учитывающими аналоги этих функций:The culturally-aware analogues of these functions are:

  • Преобразования, использующие текущий язык и региональные параметры.Conversions that use the current culture. CStr И Format функции преобразования числа в строку и CDbl и CInt функции преобразуют строку в число.The CStr and Format functions convert a number to a string, and the CDbl and CInt functions convert a string to a number.

  • Преобразования, использующие определенного языка и региональных параметров.Conversions that use a specific culture. Каждый объект number имеет ToString(IFormatProvider) метод, который преобразует число в строку и Parse(String, IFormatProvider) метод, который преобразует строку в число.Each number object has a ToString(IFormatProvider) method that converts a number to a string, and a Parse(String, IFormatProvider) method that converts a string to a number. Например Double тип предоставляет ToString(IFormatProvider) и Parse(String, IFormatProvider) методы.For example, the Double type provides the ToString(IFormatProvider) and Parse(String, IFormatProvider) methods.

Дополнительные сведения см. в разделах Str и Val.For more information, see Str and Val.

С помощью определенного языка и региональных параметровUsing a Specific Culture

Представьте себе, что вы разрабатываете приложение, которое отправляет дату (представлен в виде строки) на веб-службу.Imagine that you are developing an application that sends a date (formatted as a string) to a Web service. В этом случае приложение должно использовать определенные язык и региональные параметры для преобразования строк.In this case, your application must use a specific culture for the string conversion. Чтобы проиллюстрировать, почему, рассмотрим использование даты ToString() метод: Если приложение использует этот метод для форматирования даты 4 июля 2005 г., возвращается значение «7/4/2005 12:00:00 AM» при запуске с английского языка США (en US), но возвращает «04.07.2005 00:00:00 "при запуске с культурой немецкий (de-DE).To illustrate why, consider the result of using the date's ToString() method: If your application uses that method to format the date July 4, 2005, it returns "7/4/2005 12:00:00 AM" when run with the United States English (en-US) culture, but it returns "04.07.2005 00:00:00" when run with the German (de-DE) culture.

Если вам нужно выполнить преобразование строк в формате конкретного языка и региональных параметров, следует использовать CultureInfo класс, который встроен в .NET Framework.When you need to perform a string conversion in a specific culture format, you should use the CultureInfo class that is built into the .NET Framework. Вы можете создать новую CultureInfo объект для определенного языка и региональных параметров, передав имя культуры CultureInfo конструктор.You can create a new CultureInfo object for a specific culture by passing the culture's name to the CultureInfo constructor. Имена поддерживаемых языка и региональных параметров, перечислены в CultureInfo класс страницы справки.The supported culture names are listed in the CultureInfo class Help page.

Кроме того, можно получить экземпляр инвариантного языка и региональных параметров из CultureInfo.InvariantCulture свойство.Alternatively, you can get an instance of the invariant culture from the CultureInfo.InvariantCulture property. Инвариантный язык и региональные параметры основан на английский язык и региональные параметры, но существуют некоторые различия.The invariant culture is based on the English culture, but there are some differences. К примеру инвариантного языка и региональных параметров указывает 24-часовом формате, а не 12-часовом формате.For example, the invariant culture specifies a 24-hour clock instead of a 12-hour clock.

Чтобы преобразовать дату в строку культуры, передайте CultureInfo в объект даты ToString(IFormatProvider) метод.To convert a date to the culture's string, pass the CultureInfo object to the date object's ToString(IFormatProvider) method. Например, следующий код отображает «07/04/2005 00:00:00», независимо от параметров языка и региональных параметров приложения.For example, the following code displays "07/04/2005 00:00:00", regardless of the application's culture settings.

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

Примечание

Литералы даты всегда интерпретируются в соответствии с английского языка и региональных параметров.Date literals are always interpreted according to the English culture.

Сравнение строкComparing Strings

Существуют две важные ситуации, где необходимы сравнения строк:There are two important situations where string comparisons are needed:

  • Сортировка данных для отображения пользователю.Sorting data for display to the user. Использование операций с учетом текущего языка и региональных параметров, чтобы соответствующим образом сортировки строк.Use operations based on the current culture so the strings sort appropriately.

  • Определение, если две строки внутри приложения точно соответствовать (обычно по соображениям безопасности).Determining if two application-internal strings exactly match (typically for security purposes). Используйте операции, которые не зависят текущего языка и региональных параметров.Use operations that disregard the current culture.

Оба типа сравнения с помощью Visual Basic можно выполнить StrComp функции.You can perform both types of comparisons with the Visual Basic StrComp function. Укажите необязательное Compare аргументом, задающим тип сравнения: Text для большинства входных и выходных данных Binary для определения точных совпадений.Specify the optional Compare argument to control the type of comparison: Text for most input and output Binary for determining exact matches.

StrComp Функция возвращает целое число, указывающее на соотношение двух сравниваемых строк на основе порядка сортировки.The StrComp function returns an integer that indicates the relationship between the two compared strings based on the sorting order. Положительное значение для результата указывает, что первая строка больше второй строки.A positive value for the result indicates that the first string is greater than the second string. Отрицательный результат указывает, первая строка меньше и нулевое значение указывает на равенство между строками.A negative result indicates the first string is smaller, and zero indicates equality between the strings.

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

Можно также использовать партнер в .NET Framework StrComp функции String.Compare метод.You can also use the .NET Framework partner of the StrComp function, the String.Compare method. Это статический перегруженный метод базового строкового класса.This is a static, overloaded method of the base string class. В следующем примере показано, как используется этот метод:The following example illustrates how this method is used:

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

Для более детального контроля над выполнением сравнения можно использовать дополнительные перегрузки Compare метод.For finer control over how the comparisons are performed, you can use additional overloads of the Compare method. С помощью String.Compare метод, можно использовать comparisonType аргумент, чтобы указать тип выполняемого сравнения для использования.With the String.Compare method, you can use the comparisonType argument to specify which type of comparison to use.

Значение для comparisonType аргументValue for comparisonType argument Тип сравненияType of comparison Время использованияWhen to use
Ordinal Сравнение основано на байтов, составляющих строку.Comparison based on strings' component bytes. Используйте это значение при сравнении: идентификаторы с учетом регистра, параметры безопасности или других нелингвистических идентификаторов, где байты должны точно совпадать.Use this value when comparing: case-sensitive identifiers, security-related settings, or other non-linguistic identifiers where the bytes must match exactly.
OrdinalIgnoreCase Сравнение основано на байтов, составляющих строку.Comparison based on strings' component bytes.

OrdinalIgnoreCase использует сведения инвариантный язык и региональные параметры для определения того, два символа отличаются только регистром.OrdinalIgnoreCase uses the invariant culture information to determine when two characters differ only in capitalization.
Используйте это значение при сравнении: идентификаторы без учета регистра, параметры безопасности и данных, хранящихся в Windows.Use this value when comparing: case-insensitive identifiers, security-related settings, and data stored in Windows.
CurrentCulture или CurrentCultureIgnoreCaseCurrentCulture or CurrentCultureIgnoreCase Сравнение основано на интерпретации строк в текущих региональных параметров.Comparison based on the strings' interpretation in the current culture. Эти значения используются при сравнении: данные, которые отображаются для пользователя, большинства пользовательского ввода и других данных, требующих лингвистической интерпретации.Use these values when comparing: data that is displayed to the user, most user input, and other data that requires linguistic interpretation.
InvariantCulture или InvariantCultureIgnoreCaseInvariantCulture or InvariantCultureIgnoreCase Сравнение основано на интерпретации строк в инвариантного языка и региональных параметров.Comparison based on the strings' interpretation in the invariant culture.

Это отличается от Ordinal и OrdinalIgnoreCase, так как инвариантный язык и региональные параметры символов находится вне диапазона допустимых считает эквивалентными инвариантными символами.This is different than the Ordinal and OrdinalIgnoreCase, because the invariant culture treats characters outside its accepted range as equivalent invariant characters.
Эти значения используются только при сравнении сохраняемых данных или Отображение лингвистических данных, требующее фиксированного порядка сортировки.Use these values only when comparing persisting data or displaying linguistically-relevant data that requires a fixed sort order.

Вопросы безопасностиSecurity Considerations

Если приложение принимает решения относительно безопасности, на основе результата сравнения или операциями изменения регистра, то следует использовать операцию String.Compare и передайте Ordinal или OrdinalIgnoreCase для comparisonType аргумент.If your application makes security decisions based on the result of a comparison or case-change operation, then the operation should use the String.Compare method, and pass Ordinal or OrdinalIgnoreCase for the comparisonType argument.

См. такжеSee also