Строки в C#: Для новичков и опытных программистов (с примерами)

Введение в строки

Строки в C# — это последовательности символов, используемые для хранения и обработки текстовой информации. В C# строки представлены типом string, который является ссылочным типом данных. Под капотом string в .NET использует кодировку UTF-16 для представления символов.

Основы работы со строками

Объявление и инициализация строк

Чтобы создать строку, просто объявите переменную типа string и инициализируйте её:

string greeting = "Привет, мир!";

Неизменяемость строк

Важная особенность строк в C# — они неизменяемы (immutable). Это значит, что после создания строки её содержимое не может быть изменено. Каждая операция, которая кажется "изменяющей" строку, на самом деле создаёт новую строку.

string s = "Привет";
s += ", мир!"; // Создаётся новая строка "Привет, мир!"

Доступ к символам

Доступ к отдельным символам строки осуществляется через индексатор:

char firstChar = greeting[0]; // 'П'

Операции со строками

Конкатенация

Самый простой способ объединить две строки — использовать оператор +:

string fullName = "Иван" + " " + "Иванов";

Форматирование строк

Для более сложного и удобного создания строк часто используется метод String.Format или интерполяция строк:

string name = "Иван";
int age = 30;
string info = String.Format("Имя: {0}, Возраст: {1}", name, age);
// Или с использованием интерполяции строк
string infoInterpolated = $"Имя: {name}, Возраст: {age}";

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

Сравнение строк может осуществляться разными способами, но самый распространённый — это String.Equals:

bool areEqual = string.Equals("Привет", "привет", StringComparison.OrdinalIgnoreCase);

Поиск и выборка

Методы типа Contains, StartsWith, EndsWith позволяют проверить наличие подстроки, начала или окончания строки соответственно.

bool containsWord = greeting.Contains("мир");

Продвинутые операции со строками

Работа с символами и Char

Строка в C# — это массив char. Можно работать с отдельными символами, используя их коды ASCII или Unicode.

char[] characters = greeting.ToCharArray();

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

Разделение строки на подстроки осуществляется с помощью метода Split:

string data = "Иван,30,Москва";
string[] parts = data.Split(',');

Работа с StringBuilder

Для оптимизации работы со строками, особенно при частых изменениях, используют StringBuilder. Он представляет собой изменяемую строку и идеален для сценариев, где требуется выполнить множество модификаций текста:

StringBuilder sb = new StringBuilder("Привет");
sb.Append(", мир!");
string result = sb.ToString();

Заключение первой части

Мы рассмотрели основные понятия и операции со строками в C#. Строки — это центральный элемент многих программ, и их эффективное использование является ключом к написанию чистого и эффективного кода. Во второй части мы углубимся в темы, связанные с эффективностью, обработкой и манипуляциями со строками, а также рассмотрим некоторые продвинутые техники и практики.

Читайте так же  Убрать все пробелы в начале и конце текста в C#

Эффективность работы со строками

Из-за неизменяемости строк важно понимать, как эффективно работать с ними, чтобы избежать лишнего расхода памяти и времени выполнения.

Методы Substring и Remove

Для извлечения подстроки из строки используется метод Substring:

string sentence = "Привет, мир!";
string word = sentence.Substring(0, 6); // "Привет"

Метод Remove используется для удаления части строки:

string newSentence = sentence.Remove(6); // "Привет"

Изменение регистра

Методы ToUpper и ToLower преобразуют строку в верхний или нижний регистр:

string lowerCase = greeting.ToLower(); // "привет, мир!"
string upperCase = greeting.ToUpper(); // "ПРИВЕТ, МИР!"

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

Иногда, работы со строками включает манипуляции с массивами строк, как в примере с Split. Можно также соединять массивы строк обратно в одну строку с помощью String.Join:

string[] values = { "Иван", "30", "Москва" };
string joinedString = String.Join(", ", values); // "Иван, 30, Москва"

Поиск и обработка строк

Методы IndexOf и LastIndexOf

IndexOf помогает найти позицию подстроки в строке:

int position = greeting.IndexOf("мир"); // 8

LastIndexOf выполняет поиск начиная с конца строки.

Регулярные выражения

Для сложного поиска и манипуляций со строками часто используются регулярные выражения (класс Regex в пространстве имён System.Text.RegularExpressions):

Regex regex = new Regex(@"\d+");
Match match = regex.Match("Иван 30 лет");
if (match.Success)
{
    Console.WriteLine(match.Value); // "30"
}

Форматирование строк

Составные форматы

Составное форматирование позволяет вставлять значения переменных в строку:

string formatString = String.Format("Имя: {0}, Возраст: {1}", name, age);

Интерполяция строк

Интерполяция строк — более современный и удобный способ форматирования:

string interpolatedString = $"Имя: {name}, Возраст: {age}";

Работа с StringReader и StringWriter

StringReader и StringWriter представляют собой удобные способы для чтения и записи строк:

using StringWriter writer = new StringWriter();
writer.WriteLine("Привет,");
writer.WriteLine("мир!");
string writtenString = writer.ToString(); // "Привет,\nмир!\n"

using StringReader reader = new StringReader(writtenString);
string line;
while ((line = reader.ReadLine()) != null)
{
    Console.WriteLine(line);
}

Заключение

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

Читайте так же  Конструкторы и Деструкторы в C#: Простое объяснение с примерами

Статья написана с учётом как начинающих, так и более опытных программистов. Надеюсь, она поможет вам лучше понять и использовать строки в C#.