Speak.Me Учить иностранные слова

C#: символы (Characters)

Тип char (синоним System.Char) представляет юникод символы и занимает 2 байта. Литералы char указываются внутри одинарных кавычек:

Управляющие последовательности (Escape sequences)

Символы, которые не могут быть переданы с помощью литералов, выражаются с помощью управляющих последовательностей:

CharЗначениеЮникод
\’Одиночная кавычка0x0027
Двойная кавычка0x0022
\\Обратный слэш0x005C
\0Null0x0000
\aAlert0x0007
\bBackspace0x0008
\fПеревод страницы0x000C
\nНовая строка0x000A
\rВозврат каретки0x000D
\tГоризонтальный таб0x0009
\vВертикальный таб0x000B

С помощью управляющей последовательности \u (или \x) можно передать любой юникод символ, указав сразу после последовательности его четырехзначный шестнадцатеричный код:

Преобразование char

Тип char может быть автоматически (скрыто) преобразован в числовой тип, способный вместить бесзнаковый short. Для остальных числовых типов требуется явное приведение.

System.Char

В System.Char определен набор статических методов для работы с символами. Их можно вызвать через System.Char или его псевдоним char:

Методы ToUpper и ToLower преобразуют символ в верхний и нижний регистр соответственно. Они учитывают локаль конечного пользователя, что может приводит к неявным ошибкам. Методы ToUpperInvariant и ToLowerInvariant делают тоже самое, но без учета локали пользователя.

Также класс System.Char определяет ряд методов для категоризации символов:

  • IsLetter — все буквы (UpperCaseLetterLowerCaseLetterTitleCaseLetterModifierLetterOtherLetter)
  • IsUpper — буквы в верхнем регистре (UpperCaseLetter)
  • IsLower — буквы в нижнем регистре (LowerCaseLetter)
  • IsDigit — все цифры (DecimalDigitNumber)
  • IsLetterOrDigit — буквы и цифры (сумма IsLetter и IsDigit)
  • IsNumber — все цифры, дроби Unicode и числовые символы латинского набора (DecimalDigitNumberLetterNumberOtherNumber)
  • IsSeparator — пробел и все символы разделителей Unicode (LineSeparatorParagraphSeparator)
  • IsWhiteSpace — все разделители плюс \n, \r, \t, \f и \v (LineSeparatorParagraphSeparator)
  • IsPunctuation — знаки пунктуации (DashPunctuationConnectorPunctuationInitialQuotePunctuationFinalQuotePunctuation)
  • IsSymbol — большинство других печатных символов (MathSymbolModifierSymbolOtherSymbol)
  • IsControl — непечатные управляющие символы

Для категоризации символов также предназначен статический класс GetUnicodeCategory, он возвращает перечисление UnicodeCategory, члены которого приведены в скобках в списке выше.