Хелпикс

Главная

Контакты

Случайная статья





Добавить заданный символ по одному разу между всеми символам заданной строки.



4. Добавить заданный символ по одному разу между всеми символам заданной строки.

Здесь готовых методов нет, надо собирать итоговую строку по символам:

static string Task4(string s, char ch)

{

string s1 = “”;

for (int I = 0; I < s.Length; i++)

if (I == 0) s1 = s1 + s[i];

        else s1 = s1 + ch + s[i];

return s1;

}

 

5. Удалить из заданной строки все вхождения заданного символа.

Здесь также надо работать с каждым символом, но сделать это можно по-разному. В первом случае мы формируем новую строку только из «правильных» символов:

static void Task5A(ref string s, char ch)

{

string s1 = "";

for (int i = 0; i < s.Length; i++)

if (s[i] != ch) s1 = s1 + s[i];

s = s1;

}

 

Во втором случае в цикле удаляем из строки первое вхождение заданного символа, пока такой будет находиться:

static void Task5B(ref string s, char ch)

{

while (true)

{

int k = s.IndexOf(ch);

if (k < 0) return;

    s = s.Remove(k, 1);

}

}

 

6. Задано предложение, слова которого разделены одним или несколькими пробелами. Распечатать все слова «в столбик».

Решается в несколько этапов. Сначала строка разбивается на подстроки, разделённые одним пробелом. При этом могут появиться пустые строки, например, внутри двойного пробела. Затем из полученного строкового массива на консоль выводятся только непустые строки:

static void Task6(string s)

{

char [] sep = new char [] {' '};

string[] s1 = s.Split(sep);

// string[] s1 = s.Split(new char[] {' '});

foreach (string s2 in s1)

if (s2 != "") Console.WriteLine(s2);

}

В этом примере закомментарен вариант формирования массива подстрок без создания отдельной переменной для массива разделителей (содержащего только символ пробела).

 

7. В заданной строке S заменить заданный символ C1 другим заданным символом C2.

Если хорошо знать методы класса String, то задача решается «в одно действие»:

static void Task7B(ref string s, char c1, char c2)

{

s = s.Replace(c1,c2);

}

 

Иначе придётся перебирать все символы исходной строки:

static void Task7A(ref string s, char c1, char c2)

{

string s1 = "";

for (int i = 0; i < s.Length; i++)

if (s[i] == c1) s1 = s1 + c2;

            else s1 = s1 + s[i];

s = s1;

}

 

Тестирование описанных выше методов можно оформить в следующем виде:

static void Main(string[] args)

{

string s;

Task1("Петров");

Console.WriteLine(Task2A('*', 12));

Console.WriteLine(Task2B('*', 12));

s = "0123456789"; Task3A(ref s, 3); Console.WriteLine("3A : " + s);

s = "0123456789"; Console.WriteLine("3B : " + Task3B(s, 3));

Console.WriteLine(Task4("Петров", '-'));

s = "молоко"; Task5A(ref s, 'о'); Console.WriteLine("5A : " + s);

s = "молоко"; Task5B(ref s, 'о'); Console.WriteLine("5В : " + s);

Task6(" Тиха украинская ночь ");

s = "молоко"; Task7A(ref s, 'о', '+'); Console.WriteLine("7A : " + s);

s = "молоко"; Task7B(ref s, 'о', '+'); Console.WriteLine("7A : " + s);

 

Console.ReadLine();

}

 

В итоге, на консоли появится текст, подтверждающий корректность работы методов:



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.