String.toupper yöntem

AçıklamalarRemarks

Bu yordamların her biri, mümkün olan ve uygunsa, belirli bir küçük harfi büyük harfe dönüştürür.Each of these routines converts a given lowercase letter to an uppercase letter if possible and appropriate. Kasasının büyük/küçük harf dönüştürmesi yerel ayara özgüdür.The case conversion of towupper is locale-specific. Durum durumunda yalnızca geçerli yerel ayara uygun karakterler değişir.Only the characters relevant to the current locale are changed in case. _L soneki olmayan işlevler şu anda ayarlanmış yerel ayarı kullanır.The functions without the _l suffix use the currently set locale. _L sonekine sahip bu işlevlerin sürümleri, yerel ayarı bir parametre olarak alır ve şu anda ayarlanmış yerel ayar yerine bunu kullanır.The versions of these functions with the _l suffix take the locale as a parameter and use that instead of the currently set locale. Daha fazla bilgi için bkz. locale.For more information, see Locale.

ToUpper ‘in beklenen sonuçlara izin vermesi için, __isascii ve ıupper ‘nin ikisi de sıfır dışında döndürmelidir.In order for toupper to give the expected results, __isascii and isupper must both return nonzero.

Varsayılan olarak, bu işlevin genel durumu uygulamanın kapsamına alınır.By default, this function’s global state is scoped to the application. Bunu değiştirmek için bkz. CRT Içindeki genel durum.To change this, see Global state in the CRT.

Genel Metin Yordam EşleşmeleriGeneric-Text Routine Mappings

TCHAR.H yordamıTCHAR.H routine _UNICODE & _MBCS tanımlanmadı_UNICODE & _MBCS not defined _MBCS tanımlanmış_MBCS defined _UNICODE tanımlanmış_UNICODE defined
_totupper_totupper ToUppertoupper _mbctoupper_mbctoupper kasaüstütowupper
_totupper_l_totupper_l _toupper_l_toupper_l _mbctoupper_l_mbctoupper_l _towupper_l_towupper_l

Not

_toupper_l ve _towupper_l yerel ayar bağımlılığını yoktur ve doğrudan çağrılması için tasarlanmamıştır._toupper_l and _towupper_l have no locale dependence and are not meant to be called directly. _Totupper_ltarafından iç kullanım için sağlanır.They are provided for internal use by _totupper_l.

filter

This function filters a set of characters from input String. Keep only the characters that pass the test.

Syntax

String.filter test_function string_value

To check the signature of function, type the following in elm REPL −

> String.filter
<function> : (Char -> Bool) -> String -> String

The signature shows filter takes two input parameters and returns a String. The first parameter is a function, which has input Char and returns Bool.

Illustration

In the example, we are passing Char.isUpper as parameter to filter method; it returns all upper-case characters as shown below.

> import Char
> String.filter Char.isUpper "abcDEF"
"DEF" : String

NOTES top

       The standards require that the argument c for these functions is
       either EOF or a value that is representable in the type unsigned
       char.  If the argument c is of type char, it must be cast to unsigned
       char, as in the following example:

           char c;
           ...
           res = toupper((unsigned char) c);

       This is necessary because char may be the equivalent signed char, in
       which case a byte where the top bit is set would be sign extended
       when converting to int, yielding a value that is outside the range of
       unsigned char.

       The details of what constitutes an uppercase or lowercase letter
       depend on the locale.  For example, the default "C" locale does not
       know about umlauts, so no conversion is done for them.

       In some non-English locales, there are lowercase letters with no cor‐
       responding uppercase equivalent; the German sharp s is one example.

Другие решения

Прототип является:

Как видите, символ передается по значению, трансформируется и возвращается по значению.
Если вы не назначите возвращаемое значение переменной, оно точно будет потеряно.
Вот почему в вашем примере он переназначен так, чтобы заменить исходный.

2

занимает по значению и возвращает значение этого заглавного символа. Каждый раз, когда функция не принимает указатель или ссылку в качестве параметра, параметр будет передаваться по значению, что означает, что нет никакого способа увидеть изменения извне функции, поскольку параметр фактически будет копией переданной переменной. Для функции вы поймаете изменения, сохранив то, что возвращает функция. В этом случае символ в верхнем регистре.

Обратите внимание, что в isalpha () есть неприятная ошибка, которая заключается в следующем: функция только работает правильно для входов в диапазоне 0-255 + EOF. Так что же ты думаешь

Так что же ты думаешь.

Хорошо, если ваш тип символа оказался подписанным, и вы передаете значение больше 127, это считается отрицательным значением, и, таким образом, int, передаваемый isalpha, также будет отрицательным (и, таким образом, выходит за пределы 0-255 + EOF ).

В Visual Studio это приведет к сбою вашего приложения. Я жаловался на это в Microsoft на том основании, что функция классификации символов, которая небезопасна для всех вводимых данных, в основном бессмысленна, но получила ответ, в котором говорилось, что это полностью соответствует стандартам, и я должен просто написать лучший код. Хорошо, достаточно честно, но нигде более в стандарте кого-нибудь волнует, является ли char подписанным или неподписанным. Только в функциях isxxx он служит миной, которая может легко пройти тестирование, и никто не заметит.

Следующий код вызывает сбой Visual Studio 2015 (и, насколько мне известно, все более ранние версии):

Таким образом, isalpha () не только избыточен в вашем коде, но на самом деле он активно вреден, так как может привести к сбою в приложении любых строк, содержащих символы со значениями больше 127.

DESCRIPTION top

       These functions convert lowercase letters to uppercase, and vice
       versa.

       If c is a lowercase letter, toupper() returns its uppercase
       equivalent, if an uppercase representation exists in the current
       locale.  Otherwise, it returns c.  The toupper_l() function performs
       the same task, but uses the locale referred to by the locale handle
       locale.

       If c is an uppercase letter, tolower() returns its lowercase
       equivalent, if a lowercase representation exists in the current
       locale.  Otherwise, it returns c.  The tolower_l() function performs
       the same task, but uses the locale referred to by the locale handle
       locale.

       If c is neither an unsigned char value nor EOF, the behavior of these
       functions is undefined.

       The behavior of toupper_l() and tolower_l() is undefined if locale is
       the special locale object LC_GLOBAL_LOCALE (see duplocale(3)) or is
       not a valid locale object handle.

Dönüş DeğeriReturn Value

Bu yordamların her biri, mümkünse c’nin bir kopyasını dönüştürür ve sonucu döndürür.Each of these routines converts a copy of c, if possible, and returns the result.

C , ıswlower ‘in sıfır dışında olduğu geniş bir karakter ise ve ıswupper ‘in sıfır dışında olduğu bir geniş karakter varsa, towupper karşılık gelen geniş karakteri döndürür; Aksi takdirde, towupper c değerini değiştirmez.If c is a wide character for which iswlower is nonzero and there is a corresponding wide character for which iswupper is nonzero, towupper returns the corresponding wide character; otherwise, towupper returns c unchanged.

Bir hatayı göstermek için ayrılmış dönüş değeri yok.There is no return value reserved to indicate an error.

ToUpper ‘in beklenen sonuçlara izin vermesi için, __isascii ve ılower öğelerinin her ikisi de sıfır dışında döndürülmelidir.In order for toupper to give the expected results, __isascii and islower must both return nonzero.

RemarksRemarks

Каждая из этих подпрограмм преобразует указанную строчную букву в прописную, если это возможно и уместно.Each of these routines converts a given lowercase letter to an uppercase letter if possible and appropriate. Преобразование регистра товуппер зависит от языкового стандарта.The case conversion of towupper is locale-specific. Изменяются только символы, соответствующие текущему языковому стандарту.Only the characters relevant to the current locale are changed in case. Функции без суффикса _l используют текущую национальную настройку.The functions without the _l suffix use the currently set locale. Версии этих функций с суффиксом _l принимают языковой стандарт в качестве параметра и используют его вместо текущего языкового стандарта.The versions of these functions with the _l suffix take the locale as a parameter and use that instead of the currently set locale. Для получения дополнительной информации см. Locale.For more information, see Locale.

Чтобы обеспечить ожидаемые результаты, __isascii и Upper должны возвращать ненулевое значение.In order for toupper to give the expected results, __isascii and isupper must both return nonzero.

По умолчанию глобальное состояние этой функции ограничивается приложением.By default, this function’s global state is scoped to the application. Чтобы изменить это, см. раздел глобальное состояние в CRT.To change this, see Global state in the CRT.

Универсальное текстовое сопоставление функцийGeneric-Text Routine Mappings

Подпрограмма TCHAR.HTCHAR.H routine _UNICODE и _MBCS не определены_UNICODE & _MBCS not defined _MBCS определено_MBCS defined _UNICODE определено_UNICODE defined
_totupper_totupper ToUppertoupper _mbctoupper_mbctoupper towuppertowupper
_totupper_l_totupper_l _toupper_l_toupper_l _mbctoupper_l_mbctoupper_l _towupper_l_towupper_l

Примечание

_toupper_l и _towupper_l не имеют зависимости от языкового стандарта и не предназначены для непосредственного вызова._toupper_l and _towupper_l have no locale dependence and are not meant to be called directly. Они предоставляются для внутреннего использования _totupper_l.They are provided for internal use by _totupper_l.

Overloads

Converts the specified character to uppercase.

Converts the specified string to uppercase.

ToUpper(Char)

Converts the specified character to uppercase.

c

Char

The character to convert to uppercase.

Char

The specified character converted to uppercase.

Examples

The following code example changes the casing of a string based on the English (United States) culture, with the culture name en-US.

Remarks

Casing semantics depend on the culture in use. For the invariant culture, the casing semantics are not culture-sensitive. For a specific culture, the casing semantics are sensitive to that culture.

If a security decision depends on a string comparison or a case-change operation, the application should use the InvariantCulture to ensure that the behavior is consistent regardless of the culture settings of the system. However, the invariant culture must be used only by processes that require culture-independent results, such as system services. Otherwise, it produces results that might be linguistically incorrect or culturally inappropriate.

For more information on cultures, see CultureInfo.

ToUpper(String)

Converts the specified string to uppercase.

str

String

The string to convert to uppercase.

String

The specified string converted to uppercase.

Exceptions

ArgumentNullException

is null.

Examples

The following code example changes the casing of a string based on the English (United States) culture, with the culture name en-US.

Remarks

The returned string might differ in length from the input string. For more information on casing, refer to the Unicode Technical Report #21 «Case Mappings,» published by the Unicode Consortium (https://www.unicode.org). The current implementation preserves the length of the string. However, this behavior is not guaranteed and could change in future implementations.

Casing semantics depend on the culture in use. For the invariant culture, the casing semantics are not culture-sensitive. For a specific culture, the casing semantics are sensitive to that culture.

If a security decision depends on a string comparison or a case-change operation, the application should use the InvariantCulture to ensure that the behavior is consistent regardless of the culture settings of the system. However, the invariant culture must be used only by processes that require culture-independent results, such as system services. Otherwise, it produces results that might be linguistically incorrect or culturally inappropriate.

For more information on cultures, see CultureInfo.

Overloads

Returns a copy of this string converted to uppercase, using the casing rules of the specified culture.

Returns a copy of this string converted to uppercase.

ToUpper(CultureInfo)

Returns a copy of this string converted to uppercase, using the casing rules of the specified culture.

culture

CultureInfo

An object that supplies culture-specific casing rules.

Returns

String

The uppercase equivalent of the current string.

Exceptions

ArgumentNullException

is .

Examples

The following example converts a string of lowercase characters to two strings of uppercase characters using the English-United States and Turkish-Turkey cultures, then compares the uppercase strings. The uppercase strings are identical except that for each occurrence of the Unicode LATIN CAPITAL LETTER I in one string, the other string contains LATIN CAPITAL LETTER I WITH DOT ABOVE.

Remarks

The casing rules of the culture specified by the parameter determine the way the case of a string is changed.

Note

This method does not modify the value of the current instance. Instead, it returns a new string in which all characters in the current instance are converted to uppercase.

Security Considerations

If you pass the method a CultureInfo object other than CultureInfo.InvariantCulture, the casing operation will take culture-specific rules into account. If you need the lowercase or uppercase version of an operating system identifier, such as a file name, named pipe, or registry key, use the ToLowerInvariant or ToUpperInvariant method. This produces the same result in every culture and performs more efficiently.

Returns a copy of this string converted to uppercase.

Returns

String

The uppercase equivalent of the current string.

Examples

The following example calls the ToUpper method to convert a series of one-character strings that contain each character in the Basic Latin, Latin-1 Supplement, and Latin Extended-A character sets. It then displays each string whose uppercase character is different from its lowercase character.

Remarks

This method uses the casing rules of the current culture to convert each character in the current instance to its uppercase equivalent. If a character does not have an uppercase equivalent, it is included unchanged in the returned string.

Note

This method does not modify the value of the current instance. Instead, it returns a new string in which all characters in the current instance are converted to uppercase.

The ToUpper method is often used to convert a string to uppercase so that it can be used in a case-insensitive comparison. A better method to perform case-insensitive comparison is to call a string comparison method that has a StringComparison parameter whose value you set to for a culture-sensitive, case-insensitive comparison.

Security Considerations

The casing operation that results from calling the method takes the casing conventions of the current culture into account. If you need the lowercase or uppercase version of an operating system identifier, such as a file name, named pipe, or registry key, use the ToLowerInvariant or ToUpperInvariant method. This produces the same result in every culture (unlike the method) and performs more efficiently.

Notes to Callers

As explained in Best Practices for Using Strings, we recommend that you avoid calling string casing methods that substitute default values and instead call methods that require parameters to be explicitly specified. To convert a string to uppercase by using the casing conventions of the current culture, call the method overload with a value of for its parameter.

Решение

это функция, которая принимает свой аргумент по значению. Это мог были определены, чтобы принимать ссылку на символ и изменять его на месте, но это сделало бы более неудобным написание кода, который просто проверяет вариант символа в верхнем регистре, как в этом примере:

Другими словами, не меняется по тем же причинам, по которым не меняется ,

Чтобы не повторять такие выражения, как на левой и правой стороне задания, возьмите ссылка на символ и использовать его для чтения и записи в строку:

Использование на основе диапазона вышеизложенное можно записать более кратко (и выполнить более эффективно) как:

4

Перегрузки

Показывает, относится ли указанный символ Юникода к категории букв верхнего регистра.Indicates whether the specified Unicode character is categorized as an uppercase letter.

Показывает, относится ли указанный символ в указанной позиции в указанной строке к категории букв верхнего регистра.Indicates whether the character at the specified position in a specified string is categorized as an uppercase letter.

IsUpper(Char)

Показывает, относится ли указанный символ Юникода к категории букв верхнего регистра.Indicates whether the specified Unicode character is categorized as an uppercase letter.

Параметры

c

Char

Знак Юникода, который необходимо вычислить.The Unicode character to evaluate.

Возвращаемое значение

Boolean

Значение , если является буквой верхнего регистра; в противном случае — значение . if is an uppercase letter; otherwise, .

Комментарии

Допустимые прописные буквы являются членами следующей категории в UnicodeCategory : .Valid uppercase letters are members of the following category in UnicodeCategory: .

  • Boolean

IsUpper(String, Int32)

Показывает, относится ли указанный символ в указанной позиции в указанной строке к категории букв верхнего регистра.Indicates whether the character at the specified position in a specified string is categorized as an uppercase letter.

Параметры

s

String

Строка.A string.

index

Int32

Позиция символа, который необходимо вычислить в .The position of the character to evaluate in .

Возвращаемое значение

Boolean

Значение , если сивел в позиции в является буквой верхнего регистра; в противном случае — значение . if the character at position in is an uppercase letter; otherwise, .

Исключения

ArgumentNullException

имеет значение . is .

ArgumentOutOfRangeException

Параметр имеет значение меньше нуля или больше последней позиции в . is less than zero or greater than the last position in .

Комментарии

Позиции символов в строке индексируются начиная с нуля.Character positions in a string are indexed starting from zero.

Допустимые прописные буквы являются членами следующей категории в UnicodeCategory : .Valid uppercase letters are members of the following category in UnicodeCategory: .

  • Boolean
  • String

Примеры

В следующем примере определяется массив строк, содержащий одно слово на нескольких языках.The following example defines a string array that contains a single word in a number of languages. ToUpperInvariantМетод используется для заполнения элементов параллельного массива с версией каждого слова без учета регистра.The ToUpperInvariant method is used to populate the elements of a parallel array with the case-insensitive version of each word. Метод используется для сортировки массива с учетом регистра на основе порядка элементов в массиве верхнего регистра, чтобы элементы отображались в том же порядке независимо от языка.The method is used to sort the case-sensitive array based on the order of elements in the uppercase array to ensure that elements appear in the same order regardless of language.

Комментарии

Инвариантная культура представляет язык и региональные параметры, не учитывающие язык и региональные параметры.The invariant culture represents a culture that is culture-insensitive. Он связан с английским языком, но не с определенной страной или регионом.It is associated with the English language but not with a specific country or region. Дополнительные сведения см. в описании свойства CultureInfo.InvariantCulture.For more information, see the CultureInfo.InvariantCulture property.

Если приложение зависит от регистра строки, изменяющейся предсказуемым способом, который не влияет на текущий язык и региональные параметры, используйте ToUpperInvariant метод.If your application depends on the case of a string changing in a predictable way that is unaffected by the current culture, use the ToUpperInvariant method. ToUpperInvariantМетод эквивалентен .The ToUpperInvariant method is equivalent to . Метод рекомендуется использовать, когда коллекция строк должна находиться в прогнозируемом порядке в элементе управления пользовательского интерфейса.The method is recommended when a collection of strings must appear in a predictable order in a user interface control.

Примечание

Этот метод не изменяет значение текущего экземпляра.This method does not modify the value of the current instance. Вместо этого возвращается новая строка, в которой все символы в текущем экземпляре преобразуются в верхний регистр.Instead, it returns a new string in which all characters in the current instance are converted to uppercase.

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

Если требуется версия идентификатора операционной системы в нижнем регистре или в верхнем регистре, например имя файла, именованный канал или раздел реестра, используйте ToLowerInvariant ToUpperInvariant методы или.If you need the lowercase or uppercase version of an operating system identifier, such as a file name, named pipe, or registry key, use the ToLowerInvariant or ToUpperInvariant methods.

返回值Return Value

其中每个例程都转换c的副本(如果可能),并返回结果。Each of these routines converts a copy of c, if possible, and returns the result.

如果c是一个宽字符,其中iswlower为非零,并且有一个对应的宽字符,其中iswupper为非零值,则towupper将返回相应的宽字符;否则, towupper将返回c 。If c is a wide character for which iswlower is nonzero and there is a corresponding wide character for which iswupper is nonzero, towupper returns the corresponding wide character; otherwise, towupper returns c unchanged.

没有保留任何返回值以指示错误。There is no return value reserved to indicate an error.

为了使toupper能够提供预期的结果, __isascii和islower都必须返回非零值。In order for toupper to give the expected results, __isascii and islower must both return nonzero.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *