В строке заменить все вхождения одного символа на другой - C#
Формулировка задачи:
Ребят вот такая простенькая задачка:
Написать метод, входными параметрами которого являются строка, два символа. Метод должен заменить в строке все вхождения первого символа на символ «*» если рядом с этим символом не стоит второй символ. При решении не использовать готовы строковые функции.
Я то прогу написал, но возможно ли сам метод упростить еще, согласно условию, и вообще есть ли иной оптимальный вариант решения?
class Program
{
static void Main(string[] args)
{
string str = "vesna leto zima osenh";
char a = 'e';
char b = 't';
Console.WriteLine(funktsiya(str, a, b));
Console.ReadKey();
}
public static string funktsiya(string str, char a, char b)
{
char[] simvoly = str.ToCharArray();
for (int i = 0; i < simvoly.Length; i++)
{
if(simvoly[i] == a && simvoly[i + 1] != b)
{
simvoly[i] = '*';
}
}
string str1 = new string(simvoly);
str = str1;
return str;
}
}Решение задачи: «В строке заменить все вхождения одного символа на другой»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
char[] str = "et vesna leto zima osenh ye".ToCharArray();
char first = 'e';
char second = 't';
char what = '*';
for (int i = 0; i < str.Length; i++)
{
char left = i > 0 ? str[i - 1] : '\0';
char curr = str[i];
char right = i == str.Length - 1 ? '\0' : str[i + 1];
if (curr == first && left != second && right != second) str[i] = what;
}
string newstr = new string(str);
Console.WriteLine(newstr);
Console.ReadKey();
}
}
}