928.79K
Категория: ПрограммированиеПрограммирование

Строки и операции над ними

1.

С#
СТРОКИ И ОПЕРАЦИИ НАД
НИМИ
Основы алгоритмизации и
программирования

2.

СТРОКИ
В C# для строк используется тип string (системный тип System.String),
а для хранения одиночных символов используется тип char.
В других языках программирования строки являются
массивами
символов, в C# строки являются объектами. Объекты этого класса
представляют текст как последовательность символов Unicode.
Максимальный размер объекта String может составлять в памяти
2 ГБ, или около 1 миллиарда символов.

3.

ОБЪЯВЛЕНИЕ СТРОКИ
string <имя переменной> [=“значение”];
Значение строковой переменной указывается в двойных кавычках.
В C# можно также использовать и массивы символов, например:
char[] gl_bykvi = {'а', 'у', 'о', 'и', 'э', 'ы', 'я', 'ю', 'е', 'ё'};
Превратить массив символов в тип данных string можно так:
string str = new string(gl_bykvi);
Console.WriteLine(gl_bykvi);

4.

СТРОКА КАК НАБОР СИМВОЛОВ
Так как строка хранит коллекцию символов, в ней определен
индексатор для доступа к этим символам:
Применяя индексатор, мы можем обратиться к строке как к
массиву символов и получить по индексу любой из ее символов:
Важно помнить, что индексация всегда начинается с 0.

5.

СПЕЦСИМВОЛЫ
Символ "\" является служебным.
\n — перевод строки
\r — возврат каретки
\t — горизонтальная табуляция
\v — вертикальная табуляция
\' — одинарная кавычка, используется для объявления литералов типа System.Char
\" — двойная кавычка, используется для объявления строковых литералов
\\ — обратный слеш

6.

СВОЙСТВО LENGTH
Свойство Length возвращает длину строки.

7.

ОСНОВНЫЕ МЕТОДЫ СТРОК
Основная функциональность класса String раскрывается через его методы, среди
которых можно выделить следующие:
Метод
Описание
Length
Свойство, содержащее длину текущей строки
ToCharArray()
Преобразование в массив типа char
ToLower()
Переводит все символы строки в нижний регистр
ToUpper()
Переводит все символы строки в верхний регистр
Trim(), TrimStart (),
TrimEnd ()
Удаляет все вхождения определенного набора символов с начала и/или
конца текущей строки
PadX ()
Назначение длины строки
PadLeft(), PadRight()
Позволяет дополнить строку какими-то символами, соответственно,
слева и справа

8.

ОСНОВНЫЕ МЕТОДЫ СТРОК
Основная функциональность класса String раскрывается через его методы, среди
которых можно выделить следующие:
Метод
Описание
Insert()
Позволяет вставить строку внутрь другой строки
Remove()
Используется для удаления символов из строки
Replace()
Замена символов в строке
Split()
Разделение строк на подстроки
Substring()
Извлекает из строки подстроку, начиная с указанной позиции
IndexOf()
Ищет подстроку
Compare()
Метод, позволяющий сравнить две строки. Статический метод.
CompareOrdinal()
Сравнивает две строки без учета локали. Возвращает отрицательное
значение, если s1 < s2, равное 0, если s1 = s2, и положительное, если
s1 > s2.

9.

ОСНОВНЫЕ МЕТОДЫ СТРОК
Основная функциональность класса String раскрывается через его методы, среди
которых можно выделить следующие:
Метод
Описание
Contains()
Метод, позволяющий определить,
определенная подстрока
содержится
Equals()
Метод, позволяющий
эквивалентными
являются
Concat()
Соединяет строки
CopyTo()
Копирует часть строки, начиная с определенного индекса в массив
StartWith(), EndsWith()
Определяет, совпадает ли начало/конец строки с подстрокой
Format()
Метод, использующийся для форматирования строки. Статический
метод.
Join()
Соединяет элементы массива строк
LastIndexOf()
Находит индекс последнего вхождения символа или подстроки в строке
проверить,
ли
ли
в
строке
две
строки

10.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как проверить, пуста ли строка?
Метод IsNullOrEmpty() возвращает True, если значение строки равно null, либо
когда она пуста (значение равно ""):

11.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Метод IsNullOrWhiteSpace() работает как и метод IsNullOrEmpty(), только
возвращает True еще и тогда, когда строка представляет собой набор символов
пробела и/или табуляции ("\t"):

12.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как объединить две строки?
Конкатенация строк или объединение может производиться как с помощью операции +, так и
с помощью метода Concat:

13.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как объединить две строки?
Для объединения строк также может использоваться метод Join:
Метод Join также является
статическим. Использованная
выше версия метода получает
два
параметра:
строкуразделитель (в данном случае
пробел)
и
массив
строк,
которые будут соединяться и
разделяться разделителем.

14.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как проверить, является ли одна строка "больше" другой?
Для сравнивания строк используется
метод Compare().
Суть сравнения строк состоит в том, что
проверяется
их
отношение
относительно алфавита.
Строка "a" "меньше" строки "b", "bb"
"больше" строки "ba".
Если обе строки равны - метод
возвращает "0", если первая строка
меньше второй – "-1", если первая
больше второй – "1":
Чтобы игнорировать регистр букв, в метод
нужно передать, как третий аргумент true.
String.Compare("ab", "Ab"); // возвращает -1
String.Compare("ab", "Ab", true); // возвращает 0

15.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как перевести всю строку в верхний/нижний регистр?
Для этого используются методы ToUpper() и ToLower():

16.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как проверить, содержит ли строка подстроку?
Для проверки содержания подстроки строкой используется метод Contains().
Данный метод принимает один аргумент – подстроку. Возвращает True, если
строка содержит подстроку, в противном случае – False.
Пример:
Данная программа выводит слово
"Содержит", так как "Hello, World"
содержит подстроку "Hello".

17.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как найти индекс первого символа подстроки, которую содержит строка?
Метод IndexOf() возвращает индекс первого символа подстроки, которую
содержит строка. Данный метод принимает один аргумент – подстроку. Если
строка не содержит подстроки, метод возвращает "-1".
Пример:

18.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как узнать, начинается/заканчивается ли строка указанной подстрокой?
Для этого используются соответственно методы StartsWith() и EndsWith(),
которые возвращают логическое значение.
Пример:

19.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как
вставить
подстроку
в
строку, начиная
с
указанной
позиции?
Метод Insert() используется для вставки подстроки в строку, начиная с
указанной позиции. Данный метод принимает два аргумента – позиция и
подстрока.
Пример:

20.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как обрезать строку, начиная с указанной позиции?
Метод Remove() принимает один аргумент – позиция, начиная с которой
обрезается строка:
В метод Remove() можно передать и второй аргумент – количество обрезаемых
символов. Remove(3, 5) – удалит из строки пять символов начиная с 3-го.

21.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Обрезать определенную часть строки?
Для обрезки начальных или концевых символов используется функция Trim:
Функция Trim без параметров обрезает
начальные и конечные пробелы и возвращает
обрезанную строку. Чтобы явным образом
указать, какие начальные и конечные
символы следует обрезать, мы можем
передать в функцию массив этих символов.
Эта функция имеет частичные аналоги:
функция TrimStart обрезает начальные
символы, а функция TrimEnd обрезает
конечные символы.

22.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Обрезать определенную часть строки?
Обрезать
определенную
Функция
Substring
также
возвращает обрезанную строку.
В качестве параметра первая
использованная
версия
применяет индекс, начиная с
которого надо обрезать строку.
Вторая версия применяет два
параметра - индекс начала
обрезки и длину вырезаемой
части строки.
часть
строки
позволяет
функция
Substring:

23.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как заменить в строке все подстроки указанной новой подстрокой?
Метод Replace() принимает два аргумента – подстрока, которую нужно
заменить и новая подстрока, на которую будет заменена первая:

24.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как заменить в строке все подстроки указанной новой подстрокой?
Метод Replace() принимает два аргумента – подстрока, которую нужно
заменить и новая подстрока, на которую будет заменена первая:

25.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как преобразовать строку в массив символов?
Метод ToCharArray() возвращает массив символов указанной строки:

26.

МЕТОДЫ (ФУНКЦИИ) КЛАССА STRING
ДЛЯ РАБОТЫ СО СТРОКАМИ В СИ-ШАРП
Как разбить строку по указанному символу на массив подстрок?
Метод Split() принимает один аргумент - символ, по которому будет разбита
строка. Возвращает массив строк.
Пример:

27.

ФОРМАТИРОВАНИЕ И
ИНТЕРПОЛЯЦИЯ СТРОК
Форматирование строк
При выводе строк в консоли с помощью метода Console.WriteLine для встраивания
значений в строку мы можем применять форматирование вместо конкатенации:
Пример:
В строке "Имя: {0} Возраст: {1}" на место {0} и {1} затем будут вставляться в порядке
следования значения переменных name и age

28.

ФОРМАТИРОВАНИЕ И
ИНТЕРПОЛЯЦИЯ СТРОК
Форматирование строк
То же самое форматирование в строке мы можем сделать не только в методе
Console.WriteLine, но и в любом месте программы с помощью метода string.Format:
Пример:
Метод Format принимает строку с плейсхолдерами типа {0}, {1} и т.д., а также набор
аргументов, которые вставляются на место данных плейсхолдеров. В итоге
генерируется новая строка.

29.

СПЕЦИФИКАТОРЫ ФОРМАТИРОВАНИЯ
В методе Format могут использоваться различные спецификаторы и описатели,
которые позволяют настроить вывод данных. Рассмотрим основные описатели. Все
используемые форматы:
Спецификатор
Значение
C/c
Задает формат денежной единицы, указывает количество десятичных разрядов после запятой
D/d
Целочисленный формат, указывает минимальное количество цифр
E/e
Экспоненциальное представление числа, указывает количество десятичных разрядов после запятой
F/f
Формат дробных чисел с фиксированной точкой, указывает количество десятичных разрядов после
запятой
G/g
Задает более короткий из двух форматов: F или E
N/n
Также задает формат дробных чисел с фиксированной точкой, определяет количество разрядов после
запятой
P/p
Задает отображения знака процентов рядом с число, указывает количество десятичных разрядов
после запятой
X/x
Шестнадцатеричный формат числа

30.

ФОРМАТИРОВАНИЕ ВАЛЮТЫ
Для форматирования валюты используется описатель "C":
Число после описателя указывает, сколько чисел будет использоваться после
разделителя между целой и дробной частью. При выводе также добавляется
обозначение денежного знака для текущей культуры компьютера.

31.

ФОРМАТИРОВАНИЕ ЦЕЛЫХ ЧИСЕЛ
Для форматирования целочисленных значение применяется описатель "d":
Число после описателя указывает, сколько цифр будет в числовом значении. Если в
исходном числе цифр меньше, то к нему добавляются нули.

32.

ФОРМАТИРОВАНИЕ ДРОБНЫХ ЧИСЕЛ
Для форматирования дробны чисел используется описатель F, число после которого
указывает, сколько знаков будет использоваться после разделителя между целой и
дробной частью. Если исходное число - целое, то к нему добавляются разделитель и
нули.

33.

ФОРМАТ ПРОЦЕНТОВ
Описатель "P" задает отображение процентов. Используемый с ним числовой
спецификатор указывает, сколько знаков будет после запятой:

34.

НАСТРАИВАЕМЫЕ ФОРМАТЫ
Используя знак #, можно настроить формат вывода. Например, нам надо вывести
некоторое число в формате телефона +х (ххх)ххх-хх-хх:

35.

МЕТОД TOSTRING
Метод ToString() не только получает строковое описание объекта, но и может
осуществлять форматирование. Он поддерживает те же описатели, что используются
в методе Format:

36.

ИНТЕРПОЛЯЦИЯ СТРОК
Интерполяция строк призвана упростить форматирование строк. Перепишем пример
с выводом значений переменных в строке:
Знак доллара перед строкой указывает, что будет осуществляться интерполяция
строк. Внутри строки опять же используются плейсхолдеры {...}, только внутри
фигурных скобок уже можно напрямую писать те выражения, которые мы хотим
вывести.

37.

ИНТЕРПОЛЯЦИЯ СТРОК
Интерполяция по сути представляет более лаконичное форматирование. При этом
внутри фигурных скобок мы можем указывать не только свойства, но и различные
выражения языка C#:

38.

ИНТЕРПОЛЯЦИЯ СТРОК
Также внутри фигурных скобок можно выполнять более сложные выражения,
например, вызывать методы:

39.

ИНТЕРПОЛЯЦИЯ СТРОК
Уже внутри строки можно применять форматирование. В этом случае мы можем
применять все те же описатели, что и в методе Format. Например, выведем номер
телефона в формате +x xxx-xxx-xx-xx:

40.

ИНТЕРПОЛЯЦИЯ СТРОК
Добавляем пространство до и после форматируемого вывода:
Вывод:

41.

НЕИЗМЕНЯЕМЫЕ СТРОКИ
Стоит знать, что объекты класса String представляют собой неизменяемые (Immutable)
последовательности символов Unicode.
Когда вы используете любой метод по изменению строки (например Replace()), он
возвращает новую измененную копию строки, исходные же строки остаются
неизменными.
Так сделано потому, что операция создания новой строки гораздо менее затратна, чем
операции копирования и сравнения, что повышает скорость работы программы.
В Си-шарп также есть класс StringBuilder, который позволяет изменять строки.
English     Русский Правила