Перебор символов строки в C#
Цикл foreach уже умеет идти по строке
символ за символом. Теперь будем не просто
печатать char, а реагировать на каждый:
считать, пропускать или дописывать в новую строку.
Посчитаем, сколько раз встречается буква "'a'"
в слове "banana". Перед циклом заведем
счетчик 0 и будем увеличивать его на
каждом совпадении:
string text = "banana";
int count = 0;
foreach (char ch in text) {
if (ch == 'a') {
count++;
}
}
Console.WriteLine(count); // prints 3
Условие внутри цикла может отбирать символы
по правилу. Выведем только цифры из строки
"a1b2c3":
string text = "a1b2c3";
foreach (char ch in text) {
if (ch >= '0' && ch <= '9') {
Console.WriteLine(ch); // prints 1, 2 and 3
}
}
Новую строку собирают по символам, как сумму
в цикле. Возьмем "hello" и оставим
только гласные:
string text = "hello";
string vowels = "";
foreach (char ch in text) {
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
vowels += ch;
}
}
Console.WriteLine(vowels); // prints eo
Тот же проход можно оборвать, когда цель уже
достигнута. Проверим, есть ли в строке
буква "'z'", и выведем "Y"
или "N":
string text = "code";
bool found = false;
foreach (char ch in text) {
if (ch == 'z') {
found = true;
break;
}
}
if (found) {
Console.WriteLine("Y");
} else {
Console.WriteLine("N"); // prints N
}
Дана строка "abracadabra". Посчитайте,
сколько в ней букв "'a'", и выведите число.
Дана строка "hello". Выведите ее символы
в столбик, пропуская букву "'l'".
Дана строка "a1b22c333". Соберите строку
из всех цифр и выведите ее.
Дана строка "red fox". Выведите символы
до первого пробела, не включая его.
Дана строка "code". Соберите из нее строку
в обратном порядке и выведите ее.