
- •Язык c# и структура простой программы
- •Что такое .Net Framework
- •Что такое с#
- •Создание первой программы на с#
- •Пространство имен System
- •С# как язык Объектно-Ориентированного Программирования (ооп)
- •Состав и назначение файлов проекта
- •Структура сборки
- •Элементы языка c#
- •Базовый синтаксис с#
- •Переменные
- •Числа без знака
- •Числа со знаком
- •Числа для финансистов
- •Текстовые символы
- •Логический тип данных
- •Литералы с плавающей точкой
- •Символьные литералы
- •Строковые литералы
- •Выражения и операторы с#
- •Инициализация переменных и оператор присваивания
- •Значение в левой части
- •Ввод данных с консоли
- •Математические операторы
- •Вычисление остатка при целочисленном делении
- •Унарные операторы
- •Унарное логическое отрицание
- •Составные операторы
- •Поразрядные операторы
- •Поразрядное логическое и
- •Поразрядное логическое или
- •Поразрядное логическое исключающее или
- •Унарная поразрядная операция дополнения
- •Поразрядный сдвиг
- •Пример использования поразрядных операторов
- •Логические операторы
- •Операторы отношения
- •Приоритеты операторов
- •Исполнители алгоритмов
- •Исполнитель Чертежник
- •Исполнитель Робот
- •Компьютер как формальный исполнитель алгоритмов
- •Блок-схема
- •Псевдокод
- •Необходимые свойства алгоритма
- •Понятие о временной сложности алгоритма
- •Примеры
- •Правила для определения сложности
- •Тернарный условный оператор
- •Применение логических операций
- •Конструкция выбора
- •Примеры применения оператора выбора
- •Объединение меток case
- •Пропущенный break
- •Пример программы: Простые числа
- •Пример обработки одномерного массива чисел
- •Использование генератора случайных данных
- •Использование оператора foreach
- •Типы задач обработки одномерных числовых массивов
- •Поиск элемента в массиве
- •Многомерные массивы
- •Базовые операции со строками
- •Методы типа string
- •Копирование и клонирование строк
- •Конкатенация строк
- •Извлечение подстроки
- •Вставка подстроки
- •Замена символов и строк
- •Удаление символов из строки
- •Удаление незначащих пробелов
- •Преобразование к верхнему и нижнему регистру
- •Выравнивание по левому и правому краю поля
- •Объединение массива строк
- •Разбор строки
- •Сравнение строк
- •Форматирование текстовых строк
- •Функции
- •Описание и использование функций
- •Возвращаемые значения
- •Передача параметров
- •Выходные параметры
- •Область действия переменных
- •Область действия переменных и управляющие конструкции
- •Рекурсия
- •Параметры функции Main()
- •Перегрузка функций
- •Перечислимый тип
- •Определение перечислимых типов
- •Структуры
- •Описание структур
- •Использование структур в качестве параметров функций
- •Использование структур в качестве возвращаемых значений функций
- •Функции структур
- •Файлы и потоки
- •Основные классы ввода и вывода
- •Классы для работы с потоками
- •Классы для работы с потоками текстовых символов
- •Работа с текстовыми файлами
Базовые операции со строками
Строки символов описываются, инициализируются и присваиваются друг другу подобно другим типам данных 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();
желаемый результат не будет достигнут.
Рассмотрим подробнее использование этих методов.