Как сделать замену нечетных и четных символов в строке?

131
04 февраля 2021, 00:50

Как найти все индексы символа в строке, потом найти четное нечетное вхождение этого символа и соответсвенно заменить каждое нечетное вхождение символа на '<', а четное на '>'.

Answer 1

Ксли нельзя использовать StringBuilder, то можно попробовать массив. Например так

private string Replace(string inp, char c)
{
    var holder = new char[inp.Length];
    int counter = 1;
    for(int i=0; i<inp.Length; i++)
    {
        if (inp[i]!=c)
        {
            holder[i] = inp[i];
            continue;
        }
        if (counter%2==0)       
            holder[i] = '>';
        else        
            holder[i] = '<';
        counter++;
    }
    return new string(holder);
}

Проверка

Console.WriteLine(Replace("123!456!789!", '!'));

Вывод

123<456>789<
Answer 2

немного LINQ:

private void Do(string inputStringParam)
{
    var enumerable = inputStringParam.Select((c, i) =>
    {
        if (c != '!') return c;
        var isOdd = i / 2 == 1;
        return isOdd ? '<' : '>';
    });
    var newString = new string(enumerable.ToArray());
}

если нужно "считать" символы не по номеру строки, а по номеру вхождения '!':

private void Do(string inputStringParam)
{
    var i = 0;
    var enumerable = inputStringParam.Select(c =>
    {
        if (c != '!') return c;
        i++;
        var isOdd = i / 2 == 1;
        return isOdd ? '<' : '>';
    });
    var newString = new string(enumerable.ToArray());
}

или string.Concat(enumerable);? - не уверен что это лучше

READ ALSO
Ожидание полной загрузки файла webclient C#

Ожидание полной загрузки файла webclient C#

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

119
Как вывести объект C# в Unity консоль

Как вывести объект C# в Unity консоль

В PHP есть удобная функция var_dump, С# изучаю не долго, способы поиска не сработалиЕсть что-то подобное тут?

116
Замена типа в наследнике на производный тип

Замена типа в наследнике на производный тип

Допустим, есть дженерик-интерфейс(IRepository<T>) репозитория с типичными CRUD операциями

128