KnigkinDom.org» » »📕 Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

1 ... 33 34 35 36 37 38 39 40 41 ... 407
Перейти на страницу:

Шрифт:

-
+

Интервал:

-
+

Закладка:

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

Выполнение базовых манипуляций со строками

Работа с членами System.String выглядит вполне ожидаемо. Просто объявите переменную string и задействуйте предлагаемую типом функциональность через операцию точки. Не следует забывать, что несколько членов System.String являются статическими и потому должны вызываться на уровне класса (а не объекта).

Создайте новый проект консольного приложения по имени FunWithStrings и добавьте его в свое решение. Замените существующий код следующим кодом:

using System;

using System.Text;

BasicStringFunctionality();

static void BasicStringFunctionality()

{

  Console.WriteLine("=> Basic String functionality:");

  string firstName = "Freddy";

  // Вывод значения firstName.

  Console.WriteLine("Value of firstName: {0}", firstName);

  // Вывод длины firstname.

  Console.WriteLine("firstName has {0} characters.", firstName.Length);

  // Вывод firstName в верхнем регистре.

  Console.WriteLine("firstName in uppercase: {0}", firstName.ToUpper());

  // Вывод firstName в нижнем регистре.

  Console.WriteLine("firstName in lowercase: {0}", firstName.ToLower());

  // Содержит ли firstName букву у?

  Console.WriteLine("firstName contains the letter y?: {0}",

                     firstName.Contains("y"));

  // Вывод firstName после замены.

  Console.WriteLine("New first name: {0}", firstName.Replace("dy", ""));

  Console.WriteLine();

}

Здесь объяснять особо нечего: метод просто вызывает разнообразные члены, такие как ToUpper() и Contains(), на локальной переменной string, чтобы получить разные форматы и трансформации. Ниже приведен вывод:

***** Fun with Strings *****

=> Basic String functionality:

Value of firstName: Freddy

firstName has 6 characters.

firstName in uppercase: FREDDY

firstName in lowercase: freddy

firstName contains the letter y?: True

firstName after replace: Fred

Несмотря на то что вывод не выглядит особо неожиданным, вывод, полученный в результате вызова метода Replace(), может вводить в заблуждение. В действительности переменная firstName вообще не изменяется; взамен получается новая переменная string в модифицированном формате. Чуть позже мы еще вернемся к обсуждению неизменяемой природы строк.

Выполнение конкатенации строк

Переменные string могут соединяться вместе для построения строк большего размера с помощью операции + языка С#. Как вам должно быть известно, такой прием формально называется конкатенацией строк. Рассмотрим следующую вспомогательную функцию:

static void StringConcatenation()

{

  Console.WriteLine("=> String concatenation:");

  string s1 = "Programming the ";

  string s2 = "PsychoDrill (PTP)";

  string s3 = s1 + s2;

  Console.WriteLine(s3);

  Console.WriteLine();

}

Интересно отметить, что при обработке символа + компилятор C# выпускает вызов статического метода String.Concat(). В результате конкатенацию строк можно также выполнять, вызывая метод String.Concat() напрямую (хотя фактически это не дает никаких преимуществ, а лишь увеличивает объем набираемого кода):

static void StringConcatenation()

{

  Console.WriteLine("=> String concatenation:");

  string s1 = "Programming the ";

  string s2 = "PsychoDrill (PTP)";

  string s3 = String.Concat(s1, s2);

  Console.WriteLine(s3);

  Console.WriteLine();

}

Использование управляющих последовательностей

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

Например, чтобы вывести строку, которая содержит символ табуляции после каждого слова, можно задействовать управляющую последовательность t. Или предположим, что нужно создать один строковый литерал с символами кавычек внутри, второй — с определением пути к каталогу и третий — со вставкой трех пустых строк после вывода символьных данных. Для этого можно применять управляющие последовательности ", \ и n. Кроме того, ниже приведен еще один пример, в котором для привлечения внимания каждый строковый литерал сопровождается звуковым сигналом:

static void EscapeChars()

{

  Console.WriteLine("=> Escape characters:a");

  string strWithTabs = "ModeltColortSpeedtPet Namea ";

  Console.WriteLine(strWithTabs);

  Console.WriteLine("Everyone loves "Hello World"a ");

  Console.WriteLine("C:\MyApp\bin\Debuga ");

  // Добавить четыре пустых строки и снова выдать звуковой сигнал.

  Console.WriteLine("All finished.nnna ");

  Console.WriteLine();

}

Выполнение интерполяции строк

Синтаксис с фигурными скобками, продемонстрированный ранее в главе ({0}, {1} и т.д.), существовал в рамках платформы .NET еще со времен версии 1.0. Начиная с выхода версии C# 6, при построении строковых литералов, содержащих заполнители для переменных, программисты на C# могут использовать альтернативный синтаксис. Формально он называется интерполяцией строк. Несмотря на то что выходные данные операции идентичны выходным данным, получаемым с помощью традиционного синтаксиса форматирования строк, новый подход позволяет напрямую внедрять сами переменные, а не помещать их в список с разделителями-запятыми.

Взгляните на показанный ниже дополнительный метод в нашем классе Program(StringInterpolation()), который строит переменную типа string с применением обоих подходов:

static void StringInterpolation()

{

    Console.WriteLine("=> String interpolation:a");

    // Некоторые локальные переменные будут включены в крупную строку.

    int age = 4;

    string name = "Soren";

    // Использование синтаксиса с фигурными скобками.

    string greeting = string.Format("Hello {0} you are {1} years old.",

                                     name, age);

    Console.WriteLine(greeting);

    // Использование интерполяции строк.

    string greeting2 = $"Hello {name} you are {age} years old.";

    Console.WriteLine(greeting2);

}

В переменной greeting2 легко заметить, что конструируемая строка начинается с префикса $. Кроме того, фигурные скобки по-прежнему используются для пометки заполнителя под переменную; тем не менее, вместо применения числовой метки имеется возможность указывать непосредственно переменную. Предполагаемое преимущество заключается в том, что новый синтаксис несколько легче читать в линейной манере (слева направо) с учетом того, что не требуется "перескакивать в конец" для просмотра списка значений, подлежащих вставке во время выполнения.

С новым синтаксисом связан еще один

1 ... 33 34 35 36 37 38 39 40 41 ... 407
Перейти на страницу:
Отзывы - 0

Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор knigkindom.ru.


Партнер

Новые отзывы

  1. Гость Татьяна Гость Татьяна24 сентябрь 22:20 Как то не очень... Невеста по ошибке. Я не дам тебе развод - Майя Линн
  2. Римма Римма24 сентябрь 21:52 Почему главные героинитпкие идиотки? И сюжет не плохой, и написано хорошо. Но как героиня - так дура дурой.... Хозяйка маленького дома, или Любимая для дракона - Кира Рамис
  3. Римма Римма20 сентябрь 12:27 Много ненужных пояснений и отступлений. Весь сюжет теряет свою привлекательность. Героиня иногда так тупит, что читать не... Хозяйка приюта для перевертышей и полукровок - Елена Кутукова
Все комметарии
Новое в блоге