Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс_ред1 С#.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.8 Mб
Скачать

Базовые операции со строками

Строки символов описываются, инициализируются и присваиваются друг другу подобно другим типам данных C#:

string svarl; //Объявляем строковую переменную

string svar2 = "строка"; //Объявляем и инициализируем строку

svarl = svar2; //Присваиваем значение строке

svarl = "строка"; //Присваиваем значение строке

svarl = svar2 + "строка"; //Сцепляем две строки

int len = svarl.Length; //Получаем длину строки

Строковая переменная, если при ее описании не задается начальное значение, инициализируется специальным значением null (т. е. отсутствие значения). Это совсем не то же самое, что нулевая, или пустая строка. Приведенные ниже строки С# приведут к ошибке времени выполнения:

string si; //Создается строка со значением null

si += "abc"; //Неверно, выполнено не будет!!

Это произойдет потому, что левый операнд в операции сцепления строк не имеет значения. Если, однако, переписать строки следующим образом:

string s2 = "";

s2 += "abc";

то они будут успешно выполнены, и переменная s2 получит в итоге значение "abc".

Методы типа string

Тип string включает целый ряд предопределенных методов. Выборка наиболее полезных методов приведена в форме для класса string. Полную информацию о методах string можно найти в описании класса System.String.

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

bool s1.StartsWith(string s2); // true, если s1 начинается с s2

bool s1.EndsWith(string s2); // true, если s1 заканчивается строкой s2

Группа методов поиска с общим именем IndexOf позволяют определить позицию заданного символа внутри строки или одной строки внутри другой (ищется первое вхождение символа или строки, если такого нет, возвращается -1):

int s1.IndexOf(char ch); //Ищет символ ch внутри s1

int s1.IndexOf(char ch, int pos); //To же, но начиная с позиции pos

int s1.IndexOf(string s2); //Ищет строку s2 внутри s1

int s1.IndexOf(string s2, int pos); //To же, но начиная с позиции pos

Метод Substring позволяет выделить из строки любую ее часть:

string s1.Substring(int pos); //Извлекает подстроку из s1, начиная с

// заданной позиции до конца строки

string s1.Substring(int pos, int len); //To же, но подстрока берется с

// заданной позиции и имеет указанную длину

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

string s1.ToLower(); //Копирует s1, преобразуя буквы в строчные

string s1.ToUpper(); //Копирует s1, преобразуя буквы в прописные

Три метода позволяют убрать из строки ненужные пробелы:

string s1.TrimStart(); //Копирует s1, убирая начальные пробелы

string s1.TrimEnd(); //Копирует s1, убирая завершающие пробелы

string s1.Trim(); //Копирует si, убирая начальные и завершающие пробелы

Можно при необходимости также добавить в строку пробелы справа или слева до необходимой длины length:

string s1.PadLeft(int length); // Добавляет пробелы слева

string s1.PadRight(int length); // Добавляет пробелы справа

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

string[] s1.Split(); //Расщепляет s1 на слова, по одному на элемент массива

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

userResponse = userResponse.ToLower();

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

userResponse.ToLower();

желаемый результат не будет достигнут.

Рассмотрим подробнее использование этих методов.