Строки в C#: основы, операции и продвинутые техники
Освоение строк в C#: основы, операции и продвинутые техники
В этом уроке мы изучим строки в C# и их методы на примерах.
В C# строка — это последовательность символов. Например, "hello" — строка, содержащая символы 'h', 'e', 'l', 'l', 'o'.
Для создания строки используется ключевое слово string. Например:
// создание строки
string str = "C# Programming";
Здесь мы создали string с именем str и присвоили текст "C# Programming". В C# строки обозначаются двойными кавычками.
Пример: Создание строки в C#
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
// создание строк
string str1 = "C# Programming";
string str2 = "Programiz";
// вывод строк
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.ReadLine();
}
}
}
Вывод
C# Programming Programiz
В примере созданы две строки str1 и str2 и выведены на консоль.
Примечание: Переменная строки в C# не является примитивным типом вроде int, char и т.д. Это объект класса String.
Операции со строками
Класс string в C# предоставляет различные методы для операций над строками. Рассмотрим наиболее часто используемые.
1. Получение длины строки
Для определения длины используется свойство Length. Например:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string str = "C# Programming";
Console.WriteLine("string: " + str);
// длина строки
int length = str.Length;
Console.WriteLine("Length: " + length);
Console.ReadLine();
}
}
}
Вывод
string: C# Programming Length: 14
Свойство Length вычисляет общее число символов в строке и возвращает его.
2. Объединение двух строк в C#
Объединить две строки можно методом Concat(). Например:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string str1 = "C# ";
Console.WriteLine("string str1: " + str1);
string str2 = "Programming";
Console.WriteLine("string str2: " + str2);
// объединение двух строк
string joinedString = string.Concat(str1, str2);
Console.WriteLine("Joined string: " + joinedString);
Console.ReadLine();
}
}
}
Вывод
string str1: C# string str2: Programming Joined string: C# Programming
Обратите внимание на строку:
string joinedString = string.Concat(str1, str2);
Метод Concat() объединяет str1 и str2 и присваивает результат joinedString.
Также можно объединять строки оператором +. Подробнее см. C# string Concat.
3. Сравнение двух строк в C#
Для сравнения строк используется метод Equals(). Он проверяет, равны ли две строки. Например:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string str1 = "C# Programming";
string str2 = "C# Programming";
string str3 = "Programiz";
// сравнение str1 и str2
Boolean result1 = str1.Equals(str2);
Console.WriteLine("string str1 and str2 are equal: " + result1);
// сравнение str1 и str3
Boolean result2 = str1.Equals(str3);
Console.WriteLine("string str1 and str3 are equal: " + result2);
Console.ReadLine();
}
}
}
Вывод
string str1 and str2 are equal: True string str1 and str3 are equal: False
Созданы три строки str1, str2, str3. Метод Equals() проверяет равенство.
Неизменяемость строковых объектов
В C# строки неизменяемы (immutable). Это значит: созданная строка не может быть изменена.
Разберем на примере:
// создание строки
string str = "Hello ";
Переменная str содержит строку "Hello ".
Предположим, мы хотим изменить строку str:
// добавить строку "World"
// к предыдущей строке
str = string.Concat(str, "World");
Мы используем Concat() для добавления "World" к str.
Но как мы можем изменить строку, если они неизменяемы?
Вот что происходит:
- C# берет значение строки
"Hello ". - Создает новую строку, добавляя
"World"к"Hello ". - Создает новый строковый объект, присваивает ему значение
"Hello World"и сохраняет в str. - Исходная строка
"Hello ", присвоенная str, освобождается для сборки мусора, так как на неё нет ссылок.
Экранирующие последовательности в строках
Экранирующий символ используется для вставки специальных символов внутри строки.
Допустим, нужно включить двойные кавычки в строку.
// включить двойные кавычки
string str = "This is the "String" class";
Так как строки ограничены двойными кавычками, компилятор расценит "This is the " как строку, и код вызовет ошибку.
Для решения используем экранирующий символ \" в C#. Например:
// использование экранирующего символа
string str = "This is the \"String\" class.";
Теперь с \ перед двойной кавычкой " мы можем включить её в строку.
Некоторые экранирующие последовательности в C#:
| Последовательность | Имя символа |
|---|---|
\' | одинарная кавычка |
\" | двойная кавычка |
\\ | обратный слеш |
\0 | null |
\n | новая строка |
\t | горизонтальная табуляция |
Интерполяция строк
В C# можно использовать интерполяцию строк для вставки переменных внутрь строки. Строковый литерал должен начинаться с символа $. Например:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
// создание строки
string name = "Programiz";
// интерполяция строки
string message = $"Welcome to {name}";
Console.WriteLine(message);
Console.ReadLine();
}
}
}
Вывод
Welcome to Programiz
Здесь переменная name вставлена внутрь строки message.
string message = $"Welcome to {name}";
Обратите внимание:
- строковый литерал начинается с
$ - переменная name помещена в фигурные скобки
{}
Методы класса string в C#
Существует множество методов строки. Некоторые из них:
| Метод | Описание |
|---|---|
Format() | возвращает отформатированную строку |
Split() | разбивает строку на подстроки |
Substring() | возвращает подстроку |
Compare() | сравнивает строковые объекты |
Replace() | заменяет указанный старый символ на новый |
Contains() | проверяет, содержит ли строка подстроку |
Join() | объединяет заданные строки с разделителем |
Trim() | удаляет начальные и конечные пробелы |
EndsWith() | проверяет, заканчивается ли строка заданной подстрокой |
IndexOf() | возвращает позицию указанного символа |
Remove() | удаляет символы из строки |
ToUpper() | преобразует строку в верхний регистр |
ToLower() | преобразует строку в нижний регистр |
PadLeft() | дополняет строку слева пробелами или заданным символом |
PadRight() | дополняет строку справа пробелами или заданным символом |
StartsWith() | проверяет, начинается ли строка с заданной подстроки |
ToCharArray() | преобразует строку в массив char |
LastIndexOf() | возвращает индекс последнего вхождения подстроки |
Часто задаваемые вопросы
1. Как создать массив строк в C#?
Массив строк создается так же, как массив для других типов. Например:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
// массив строк
string[] animals = {"Monkey", "Dog", "Cat"};
// вывод элементов
Console.WriteLine(animals[0]);
Console.WriteLine(animals[1]);
Console.WriteLine(animals[2]);
Console.ReadLine();
}
}
}
Вывод
Monkey Dog Cat
2. Разница между string и String в C#
Технической разницы между string и String нет. В C# string — псевдоним для System.String.
Рекомендуется использовать string, так как он работает даже без using System;.
Язык C
- Освоение строк в Java: создание, методы и лучшие практики
- Строковые представления в Java Enums: настройка toString() и лучшие практики
- Функции строк в C++: strcpy, strcat, strlen, strcmp — практические примеры
- Строки в C просто: объявление, ввод, вывод и библиотечные функции
- Понимание String.charAt() в Java: синтаксис, возвращаемый тип, исключения и пример
- Освоение String.endsWith() в Java: проверка суффиксов строки с примерами
- Мастерство метода strip() в Python: подробное руководство и практические примеры
- Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
- Мастерство строк форматирования format() в Python: понятные примеры
- Python len(): практическое руководство по измерению длины объектов