Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Строки в C#: создание, свойства, методы и лучшие практики

Что такое строка в C#

В C# строки — это объекты типа System.String (псевдоним string). Строки неизменяемы (immutable): любая операция, меняющая строку, создаёт новый объект.

Создание строк

// 1. Строковый литерал
string s1 = "Hello";

// 2. Конкатенация
string fname = "Rowan", lname = "Atkinson";
string full = fname + " " + lname; // "Rowan Atkinson"

// 3. Конструктор из char[]
char[] letters = { 'H', 'e', 'l', 'l', 'o' };
string s2 = new string(letters); // "Hello"

// 4. Методы, возвращающие строку
string[] parts = { "Hello", "World" };
string joined = String.Join(" ", parts); // "Hello World"

// 5. Форматирование
DateTime dt = new DateTime(2024, 1, 15, 14, 30, 0);
string formatted = String.Format("Дата: {0:d}, Время: {0:t}", dt);
// "Дата: 15.01.2024, Время: 14:30"

// 6. Интерполирование строк (C# 6.0+) — ПРЕДПОЧТИТЕЛЬНЫЙ СПОСОБ
string interpolated = $"Привет, {fname}! Сегодня {dt:d}.";

Свойства класса String

СвойствоОписание
LengthЧисло символов (char) в строке
Chars[int index]Индексатор для доступа к символу (только чтение)
string s = "Hello";
Console.WriteLine(s.Length); // 5
Console.WriteLine(s[1]);     // 'e'

Основные методы String

МетодОписание
Compare(strA, strB)Сравнение строк (0=равны, <0 — первая меньше, >0 — больше). Есть перегрузка с ignoreCase.
Concat(str0, str1, ...)Конкатенация строк
Contains(value)Содержит ли строка подстроку
Copy(str)Создаёт копию строки
EndsWith(value)Заканчивается ли на подстроку
Equals(value)Равенство строк (перегрузка Object.Equals)
Format(format, args)Форматирование (как string.Format)
IndexOf(value)Индекс первого вхождения символа/подстроки (-1 если нет)
LastIndexOf(value)Индекс последнего вхождения
Insert(startIndex, value)Вставка подстроки в позицию
IsNullOrEmpty(value)Проверка на null или пустую строку
IsNullOrWhiteSpace(value)Проверка на null, пустую или только пробелы
Join(separator, array)Объединение массива строк с разделителем
Remove(startIndex[, count])Удаление символов
Replace(old, new)Замена всех вхождений символа/подстроки
Split(separator[, count])Разделение на подстроки по разделителю
StartsWith(value)Начинается ли с подстроки
Substring(startIndex[, length])Извлечение подстроки
ToCharArray()Массив символов
ToLower() / ToUpper()Приведение к нижнему/верхнему регистру
Trim() / TrimStart() / TrimEnd()Удаление пробелов по краям

Примеры использования

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

string s1 = "Test", s2 = "Text";
int cmp = String.Compare(s1, s2); // -1 (s1 < s2)
bool eq = s1.Equals(s2); // false
bool eqOrd = String.Equals(s1, s2, StringComparison.OrdinalIgnoreCase); // false

Проверка содержимого

string text = "This is test";
if (text.Contains("test")) Console.WriteLine("Found!");

Подстрока

string s = "Last night I dreamt of San Pedro";
string sub = s.Substring(23); // "San Pedro"
string sub2 = s.Substring(5, 5); // "night"

Объединение строк

string[] lines = { "Line 1", "Line 2", "Line 3" };
string joined = String.Join("\n", lines);

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

string csv = "apple,banana,orange";
string[] fruits = csv.Split(','); // ["apple", "banana", "orange"]

StringBuilder — для эффективной конкатенации

Так как строки неизменяемы, повторная конкатенация в цикле создаёт много временных объектов. StringBuilder (в System.Text) решает это:

using System.Text;

var sb = new StringBuilder();
for (int i = 0; i < 1000; i++)
    sb.Append(i).Append(' ');

string result = sb.ToString(); // одна аллокация

Лучшие практики

Язык C

  1. Классы и объекты в C#: Фундаменты надёжного ООП
  2. Строки в C#: основы, операции и продвинутые техники
  3. Освоение строк в Java: создание, методы и лучшие практики
  4. Паттерн Singleton в Java: как реализовать и безопасно использовать
  5. Строковые представления в Java Enums: настройка toString() и лучшие практики
  6. Функции строк в C++: strcpy, strcat, strlen, strcmp — практические примеры
  7. Строки в C просто: объявление, ввод, вывод и библиотечные функции
  8. Освоение строковых операций в Python: replace, join, split, reverse, преобразование регистра
  9. Класс String в Java: создание, манипуляции и основные методы
  10. Сериализация объектов в Java: сохранение и восстановление состояния