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.