Similar presentations:
Строки и операции над ними
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, который позволяет изменять строки.