Низът — поредица от символи
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.75String.Format
По-стария начин — функционално същото:
string s = string.Format("{0} е на {1} години", name, age);Форматиращи спецификатори
| Формат | Какво прави | Пример |
|---|---|---|
| :F2 | 2 знака след десетичната запетая | 3.14159 → 3.14 |
| :N0 | С разделители за хилядите | 1000000 → 1,000,000 |
| :P0 | Процент | 0.85 → 85% |
| :X | Шестнадесетично | 255 → FF |
| ,4 | Минимална широчина 4 | 5 → " 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, ако не си сигурен във входа.