СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Работа со строками. Работа с датами и временем

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Работа со строками. Работа с датами и временем»

Работа со строками. Работа с датами и временем.

Работа со строками. Работа с датами и временем.

 Работа со строками  Довольно большое количество задач, которые могут встретиться при разработке приложений, так или иначе связано с обработкой строк - парсинг веб-страниц, поиск в тексте, какие-то аналитические задачи, связанные с извлечением нужной информации из текста и т.д. Поэтому в этом плане работе со строками уделяется особое внимание.

Работа со строками

  • Довольно большое количество задач, которые могут встретиться при разработке приложений, так или иначе связано с обработкой строк - парсинг веб-страниц, поиск в тексте, какие-то аналитические задачи, связанные с извлечением нужной информации из текста и т.д. Поэтому в этом плане работе со строками уделяется особое внимание.
 В языке C# строковые значения представляет тип string, а вся функциональность работы с данным типом сосредоточена в классе System.String. Собственно string является псевдонимом для класса String. Объекты этого класса представляют текст как последовательность символов Unicode. Максимальный размер объекта String может составлять в памяти 2 ГБ, или около 1 миллиарда символов.
  • В языке C# строковые значения представляет тип string, а вся функциональность работы с данным типом сосредоточена в классе System.String. Собственно string является псевдонимом для класса String. Объекты этого класса представляют текст как последовательность символов Unicode. Максимальный размер объекта String может составлять в памяти 2 ГБ, или около 1 миллиарда символов.
 Создание строк  Создавать строки можно, как используя переменную типа string и присваивая ей значение, так и применяя один из конструкторов класса String :

Создание строк

  • Создавать строки можно, как используя переменную типа string и присваивая ей значение, так и применяя один из конструкторов класса String :
 Конструктор String имеет различное число версий. Так, вызов конструктора  new String('a', 6)  6 раз повторит объект из первого параметра, то есть фактически создаст строку
  • Конструктор String имеет различное число версий. Так, вызов конструктора
  • new String('a', 6)
  • 6 раз повторит объект из первого параметра, то есть фактически создаст строку "aaaaaa".
 Еще один конструктор принимает массив символов, из которых создается строка
  • Еще один конструктор принимает массив символов, из которых создается строка
 Третий использованный выше в примере конструктор позволяет создать строку из части массива символов. Второй параметр передает начальный индекс, с которого извлекаются символы, а третий параметр указывает на количество символов:
  • Третий использованный выше в примере конструктор позволяет создать строку из части массива символов. Второй параметр передает начальный индекс, с которого извлекаются символы, а третий параметр указывает на количество символов:
  Строка как набор символов  Так как строка хранит коллекцию символов, в ней определен индексатор для доступа к этим символам:

Строка как набор символов

  • Так как строка хранит коллекцию символов, в ней определен индексатор для доступа к этим символам:
Применяя индексатор, мы можем обратиться к строке как к массиву символов и получить по индексу любой из ее символов: Используя свойство Length, как и в обычном массиве, можно получить длину строки.
  • Применяя индексатор, мы можем обратиться к строке как к массиву символов и получить по индексу любой из ее символов:

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

Перебор строк Класс String реализует интерфейс IEnumerable, благодаря чему строку можно перебрать в цикле foreach как набор объектов char. Также можно с помощью других типов циклов перебрать строку, применяя обращение к символам по индексу:

Перебор строк

  • Класс String реализует интерфейс IEnumerable, благодаря чему строку можно перебрать в цикле foreach как набор объектов char. Также можно с помощью других типов циклов перебрать строку, применяя обращение к символам по индексу:
Сравнение строк В отличие от других классов строки сравниваются по значению их символов, а не по ссылкам:

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

  • В отличие от других классов строки сравниваются по значению их символов, а не по ссылкам:
Основные методы строк Основная функциональность класса String раскрывается через его методы, среди которых можно выделить следующие: Compare: сравнивает две строки с учетом текущей культуры (локали) пользователя CompareOrdinal: сравнивает две строки без учета локали Contains: определяет, содержится ли подстрока в строке Concat: соединяет строки CopyTo: копирует часть строки, начиная с определенного индекса в массив

Основные методы строк

Основная функциональность класса String раскрывается через его методы, среди которых можно выделить следующие:

  • Compare: сравнивает две строки с учетом текущей культуры (локали) пользователя
  • CompareOrdinal: сравнивает две строки без учета локали
  • Contains: определяет, содержится ли подстрока в строке
  • Concat: соединяет строки
  • CopyTo: копирует часть строки, начиная с определенного индекса в массив
EndsWith: определяет, совпадает ли конец строки с подстрокой Format: форматирует строку IndexOf: находит индекс первого вхождения символа или подстроки в строке Insert: вставляет в строку подстроку Join: соединяет элементы массива строк LastIndexOf: находит индекс последнего вхождения символа или подстроки в строке Replace: замещает в строке символ или подстроку другим символом или подстрокой
  • EndsWith: определяет, совпадает ли конец строки с подстрокой
  • Format: форматирует строку
  • IndexOf: находит индекс первого вхождения символа или подстроки в строке
  • Insert: вставляет в строку подстроку
  • Join: соединяет элементы массива строк
  • LastIndexOf: находит индекс последнего вхождения символа или подстроки в строке
  • Replace: замещает в строке символ или подстроку другим символом или подстрокой
Split: разделяет одну строку на массив строк Substring: извлекает из строки подстроку, начиная с указанной позиции ToLower: переводит все символы строки в нижний регистр ToUpper: переводит все символы строки в верхний регистр Trim: удаляет начальные и конечные пробелы из строки
  • Split: разделяет одну строку на массив строк
  • Substring: извлекает из строки подстроку, начиная с указанной позиции
  • ToLower: переводит все символы строки в нижний регистр
  • ToUpper: переводит все символы строки в верхний регистр
  • Trim: удаляет начальные и конечные пробелы из строки
Объединение строк Конкатенация строк или объединение может производиться как с помощью операции +, так и с помощью метода Concat:

Объединение строк

  • Конкатенация строк или объединение может производиться как с помощью операции +, так и с помощью метода Concat:
Метод Concat является статическим методом класса string, принимающим в качестве параметров две строки. Также имеются другие версии метода, принимающие другое количество параметров.
  • Метод Concat является статическим методом класса string, принимающим в качестве параметров две строки. Также имеются другие версии метода, принимающие другое количество параметров.
Для объединения строк также может использоваться метод Join:
  • Для объединения строк также может использоваться метод Join:
Метод Join также является статическим. Использованная выше версия метода получает два параметра: строку-разделитель (в данном случае пробел) и массив строк, которые будут соединяться и разделяться разделителем.
  • Метод Join также является статическим. Использованная выше версия метода получает два параметра: строку-разделитель (в данном случае пробел) и массив строк, которые будут соединяться и разделяться разделителем.
Сравнение строк Для сравнения строк применяется статический метод Compare:

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

  • Для сравнения строк применяется статический метод Compare:
Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай - если строки равны, то возвращается число 0.
  • Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай - если строки равны, то возвращается число 0.
В данном случае так как символ h по алфавиту стоит выше символа w, то и первая строка будет стоять выше.
  • В данном случае так как символ h по алфавиту стоит выше символа w, то и первая строка будет стоять выше.
Поиск в строке С помощью метода IndexOf мы можем определить индекс первого вхождения отдельного символа или подстроки в строке:

Поиск в строке

  • С помощью метода IndexOf мы можем определить индекс первого вхождения отдельного символа или подстроки в строке:
Подобным образом действует метод LastIndexOf, только находит индекс последнего вхождения символа или подстроки в строку.
  • Подобным образом действует метод LastIndexOf, только находит индекс последнего вхождения символа или подстроки в строку.
Еще одна группа методов позволяет узнать начинается или заканчивается ли строка на определенную подстроку. Для этого предназначены методы StartsWith и EndsWith. Например, в массиве строк хранится список файлов, и нам надо вывести все файлы с расширением exe:
  • Еще одна группа методов позволяет узнать начинается или заканчивается ли строка на определенную подстроку. Для этого предназначены методы StartsWith и EndsWith. Например, в массиве строк хранится список файлов, и нам надо вывести все файлы с расширением exe:
Разделение строк С помощью функции Split мы можем разделить строку на массив подстрок. В качестве параметра функция Split принимает массив символов или строк, которые и будут служить разделителями. Например, подсчитаем количество слов в сроке, разделив ее по пробельным символам:

Разделение строк

  • С помощью функции Split мы можем разделить строку на массив подстрок. В качестве параметра функция Split принимает массив символов или строк, которые и будут служить разделителями. Например, подсчитаем количество слов в сроке, разделив ее по пробельным символам:
Это не лучший способ разделения по пробелам, так как во входной строке у нас могло бы быть несколько подряд идущих пробелов и в итоговый массив также бы попадали пробелы, поэтому лучше использовать другую версию метода:
  • Это не лучший способ разделения по пробелам, так как во входной строке у нас могло бы быть несколько подряд идущих пробелов и в итоговый массив также бы попадали пробелы, поэтому лучше использовать другую версию метода:
Второй параметр StringSplitOptions.RemoveEmptyEntries говорит, что надо удалить все пустые подстроки.
  • Второй параметр StringSplitOptions.RemoveEmptyEntries говорит, что надо удалить все пустые подстроки.
Обрезка строки Для обрезки начальных или концевых символов используется функция Trim:

Обрезка строки

  • Для обрезки начальных или концевых символов используется функция Trim:
Функция Trim без параметров обрезает начальные и конечные пробелы и возвращает обрезанную строку. Чтобы явным образом указать, какие начальные и конечные символы следует обрезать, мы можем передать в функцию массив этих символов.
  • Функция Trim без параметров обрезает начальные и конечные пробелы и возвращает обрезанную строку. Чтобы явным образом указать, какие начальные и конечные символы следует обрезать, мы можем передать в функцию массив этих символов.
Эта функция имеет частичные аналоги: функция TrimStart обрезает начальные символы, а функция TrimEnd обрезает конечные символы.
  • Эта функция имеет частичные аналоги: функция TrimStart обрезает начальные символы, а функция TrimEnd обрезает конечные символы.
Обрезать определенную часть строки позволяет функция Substring:
  • Обрезать определенную часть строки позволяет функция Substring:
Функция Substring также возвращает обрезанную строку. В качестве параметра первая использованная версия применяет индекс, начиная с которого надо обрезать строку. Вторая версия применяет два параметра - индекс начала обрезки и длину вырезаемой части строки.
  • Функция Substring также возвращает обрезанную строку. В качестве параметра первая использованная версия применяет индекс, начиная с которого надо обрезать строку. Вторая версия применяет два параметра - индекс начала обрезки и длину вырезаемой части строки.
Вставка Для вставки одной строки в другую применяется функция Insert: Первым параметром в функции Insert является индекс, по которому надо вставлять подстроку, а второй параметр - собственно подстрока.

Вставка

  • Для вставки одной строки в другую применяется функция Insert:

Первым параметром в функции Insert является индекс, по которому надо вставлять подстроку, а второй параметр - собственно подстрока.

Удаление строк Удалить часть строки помогает метод Remove : Первая версия метода Remove принимает индекс в строке, начиная с которого надо удалить все символы. Вторая версия принимает еще один параметр - сколько символов надо удалить.

Удаление строк

  • Удалить часть строки помогает метод Remove :

Первая версия метода Remove принимает индекс в строке, начиная с которого надо удалить все символы. Вторая версия принимает еще один параметр - сколько символов надо удалить.

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

Замена

  • Чтобы заменить один символ или подстроку на другую, применяется метод Replace :
Во втором случае применения функции Replace строка из одного символа
  • Во втором случае применения функции Replace строка из одного символа "о" заменяется на пустую строку, то есть фактически удаляется из текста. Подобным способом легко удалять какой-то определенный текст в строках.
Смена регистра Для приведения строки к верхнему и нижнему регистру используются соответственно функции ToUpper() и ToLower() :

Смена регистра

  • Для приведения строки к верхнему и нижнему регистру используются соответственно функции ToUpper() и ToLower() :
  Работа с датами и временем  Для работы с датами и временем в .NET предназначена структура DateTime. Она представляет дату и время от 00:00:00 1 января 0001 года до 23:59:59 31 декабря 9999 года.

Работа с датами и временем

  • Для работы с датами и временем в .NET предназначена структура DateTime. Она представляет дату и время от 00:00:00 1 января 0001 года до 23:59:59 31 декабря 9999 года.
 Для создания нового объекта DateTime также можно использовать конструктор. Пустой конструктор создает начальную дату:
  • Для создания нового объекта DateTime также можно использовать конструктор. Пустой конструктор создает начальную дату:
 То есть мы получим минимально возможное значение, которое также можно получить следующим образом:
  • То есть мы получим минимально возможное значение, которое также можно получить следующим образом:
 Чтобы задать конкретную дату, нужно использовать один из конструкторов, принимающих параметры:
  • Чтобы задать конкретную дату, нужно использовать один из конструкторов, принимающих параметры:
 Установка времени:
  • Установка времени:
 Если необходимо получить текущую время и дату, то можно использовать ряд свойств DateTime:
  • Если необходимо получить текущую время и дату, то можно использовать ряд свойств DateTime:
 Консольный вывод:
  • Консольный вывод:
 Свойство DateTime.Now берет текущую дату и время компьютера, DateTime.UtcNow - дата и время относительно времени по Гринвичу (GMT) и DateTime.Today - только текущая дата.
  • Свойство DateTime.Now берет текущую дату и время компьютера, DateTime.UtcNow - дата и время относительно времени по Гринвичу (GMT) и DateTime.Today - только текущая дата.
 При работе с датами надо учитывать, что по умолчанию для представления дат применяется григорианский календарь. Но что будет, если мы захотим получить день недели для 5 октября 1582 года:
  • При работе с датами надо учитывать, что по умолчанию для представления дат применяется григорианский календарь. Но что будет, если мы захотим получить день недели для 5 октября 1582 года:
 Консоль высветит значение Tuesday, то есть вторник. Однако, как может быть известно из истории, впервые переход с юлианского календаря на григорианский состоялся в октябре 1582 года. Тогда после даты 4 октября (четверг) (еще по юлианскому календарю) сразу перешли к 15 октября (пятница)(уже по григорианскому календарю). Таким образом, фактически выкинули 10 дней. То есть после 4 октября шло 15 октября.
  • Консоль высветит значение Tuesday, то есть вторник. Однако, как может быть известно из истории, впервые переход с юлианского календаря на григорианский состоялся в октябре 1582 года. Тогда после даты 4 октября (четверг) (еще по юлианскому календарю) сразу перешли к 15 октября (пятница)(уже по григорианскому календарю). Таким образом, фактически выкинули 10 дней. То есть после 4 октября шло 15 октября.
В большинстве случаев данный факт вряд ли как-то повлияет на вычисления, однако при работе с очень давними датами данный аспект следует учитывать.
  • В большинстве случаев данный факт вряд ли как-то повлияет на вычисления, однако при работе с очень давними датами данный аспект следует учитывать.
Операции с DateTime Основные операции со структурой DateTime связаны со сложением или вычитанием дат. Например, надо к некоторой дате прибавить или, наоборот, отнять несколько дней.

Операции с DateTime

  • Основные операции со структурой DateTime связаны со сложением или вычитанием дат. Например, надо к некоторой дате прибавить или, наоборот, отнять несколько дней.
Для добавления дат используется ряд методов: Add(TimeSpan value): добавляет к дате значение TimeSpan AddDays(double value): добавляет к текущей дате несколько дней AddHours(double value): добавляет к текущей дате несколько часов AddMinutes(double value): добавляет к текущей дате несколько минут AddMonths(int value): добавляет к текущей дате несколько месяцев AddYears(int value): добавляет к текущей дате несколько лет

Для добавления дат используется ряд методов:

  • Add(TimeSpan value): добавляет к дате значение TimeSpan
  • AddDays(double value): добавляет к текущей дате несколько дней
  • AddHours(double value): добавляет к текущей дате несколько часов
  • AddMinutes(double value): добавляет к текущей дате несколько минут
  • AddMonths(int value): добавляет к текущей дате несколько месяцев
  • AddYears(int value): добавляет к текущей дате несколько лет
Например, добавим к некоторой дате 3 часа:
  • Например, добавим к некоторой дате 3 часа:
Для вычитания дат используется метод Subtract(DateTime date): Здесь даты различаются на три часа, поэтому результатом будет дата
  • Для вычитания дат используется метод Subtract(DateTime date):

Здесь даты различаются на три часа, поэтому результатом будет дата "03:00:00".

Метод Substract не имеет возможностей для отдельного вычитания дней, часов и так далее. Но это и не надо, так как мы можем передавать в метод AddDays() и другие методы добавления отрицательные значения:
  • Метод Substract не имеет возможностей для отдельного вычитания дней, часов и так далее. Но это и не надо, так как мы можем передавать в метод AddDays() и другие методы добавления отрицательные значения:
Кроме операций сложения и вычитания еще есть ряд методов форматирования дат:
  • Кроме операций сложения и вычитания еще есть ряд методов форматирования дат:
Метод ToLocalTime() преобразует время UTC в локальное время, добавляя смещение относительно времени по Гринвичу. Метод ToUniversalTime(), наоборот, преобразует локальное время во время UTC, то есть вычитает смещение относительно времени по Гринвичу. Остальные методы преобразуют дату к определенному формату.
  • Метод ToLocalTime() преобразует время UTC в локальное время, добавляя смещение относительно времени по Гринвичу. Метод ToUniversalTime(), наоборот, преобразует локальное время во время UTC, то есть вычитает смещение относительно времени по Гринвичу. Остальные методы преобразуют дату к определенному формату.
Форматирование дат и времени Для форматирования вывода дат и времени применяется ряд строковых форматов:

Форматирование дат и времени

  • Для форматирования вывода дат и времени применяется ряд строковых форматов:
Выведем текущею дату и время во всех форматах:
  • Выведем текущею дату и время во всех форматах:
Консольный вывод:

Консольный вывод:

Настройка формата времени и даты Не всегда удобно использование встроенных форматов даты и времени. Иногда бывает необходимо задать сообственную форму отображения объекта DateTime. В этом случае мы можем составить свой формат из описателей:

Настройка формата времени и даты

  • Не всегда удобно использование встроенных форматов даты и времени. Иногда бывает необходимо задать сообственную форму отображения объекта DateTime. В этом случае мы можем составить свой формат из описателей:
Создадим пару своих форматов:

Создадим пару своих форматов:

Консольный вывод:

Консольный вывод: