Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 1 · Урок 9

Низове (strings)

Работа с текст в C# — индексиране, дължина, основни методи, форматиране, преобразуване от/към число.

Низът — поредица от символи

string е тип за съхраняване на текст. Зад кулисите всеки низ е поредица от символи (char), към които можеш да достъпваш по индекс — точно като в масив.

string s = "Програма";
Console.WriteLine(s.Length);   // 8
Console.WriteLine(s[0]);       // П
Console.WriteLine(s[7]);       // а

Низовете са неизменяеми (immutable)

След като веднъж създадеш низ, не можеш да промениш конкретен символ — s[0] = 'X' ще даде грешка. Всяка „промяна" всъщност създава нов низ.

Основни методи

МетодПравиПример → резултат
ToUpper()Главни букви"hello".ToUpper() → "HELLO"
ToLower()Малки букви"ABC".ToLower() → "abc"
Trim()Маха интервали отпред/отзад" hi ".Trim() → "hi"
LengthБрой символи"abc".Length → 3
Contains(...)Съдържа ли низа подниз"hello".Contains("ell") → true
StartsWith(...)Започва ли с"file.cs".StartsWith("file") → true
EndsWith(...)Завършва ли с"file.cs".EndsWith(".cs") → true
IndexOf(...)На кой индекс е (или −1)"hello".IndexOf('l') → 2
Substring(start, len)Извлича част"hello".Substring(1, 3) → "ell"
Replace(a, b)Замества"a-b-c".Replace("-", "_") → "a_b_c"
Split(sep)Разбива по разделител"a,b,c".Split(',') → массив "a","b","c"

Веригиране

Методите връщат нов низ — можеш да ги веригираш:

string s = "   Hello World   ";
string clean = s.Trim().ToLower().Replace(" ", "-");
// "hello-world"

Сравняване на низове

string a = "Иван";
string b = "иван";

bool eq1 = a == b;                              // false (различен регистър)
bool eq2 = a.Equals(b, StringComparison.OrdinalIgnoreCase);  // true

== в C# сравнява по съдържание (не по адрес в паметта, както в някои други езици).

Форматиране и интерполация

Интерполация $"..."

string name = "Иван";
int age = 17;
double grade = 5.75;

Console.WriteLine($"{name} е на {age} години, оценка {grade:F2}");
// Иван е на 17 години, оценка 5.75

String.Format

По-стария начин — функционално същото:

string s = string.Format("{0} е на {1} години", name, age);

Форматиращи спецификатори

ФорматКакво правиПример
:F22 знака след десетичната запетая3.14159 → 3.14
:N0С разделители за хилядите1000000 → 1,000,000
:P0Процент0.85 → 85%
:XШестнадесетично255 → FF
,4Минимална широчина 45 → " 5"

От низ към число и обратно

// низ → число
string s = "42";
int n = int.Parse(s);
double d = double.Parse("3.14");

// безопасно (без exception при грешка)
if (int.TryParse(input, out int value))
{
    Console.WriteLine($"Получих число: {value}");
}
else
{
    Console.WriteLine("Не е валидно число.");
}

// число → низ
string s2 = 42.ToString();
string s3 = (3.14).ToString("F1");   // "3.1"

Полезни задачи

Брой думи

string text = "Това е едно изречение с думи";
string[] words = text.Split(' ');
Console.WriteLine(words.Length);   // 6

Палиндром (чете се еднакво и обратно)

static bool IsPalindrome(string s)
{
    s = s.ToLower();
    for (int i = 0; i < s.Length / 2; i++)
    {
        if (s[i] != s[s.Length - 1 - i]) return false;
    }
    return true;
}

Console.WriteLine(IsPalindrome("Авва"));   // true

Какво трябва да запомниш

  • Низовете в C# са неизменяеми — всяка промяна създава нов низ.
  • Достъп по индекс с s[i], дължина с s.Length.
  • Най-полезни методи: ToUpper, ToLower, Trim, Contains, IndexOf, Substring, Replace, Split.
  • За форматиране — интерполация $"{x:F2}".
  • За парсване ползвай TryParse, ако не си сигурен във входа.