Вставить в подстроку не вставляет по индексу

У меня есть следующий код, который предназначен для перебора и добавления значений к строковому значению. Каждое другое значение, начиная с индекса 0 построителя строк, RepeatIndexes, всегда должно быть волнистым. и другое значение из определенного индекса в библиотеке, которая у меня есть в другом месте. Просто сделай вид, что

char InsertThis = indexJustForRepetas[IndexOfIndexes[RepeatTime]];  

^ - = 's' X '- ^

вот фактический код / ​​цикл:

StringBuilder RepeatIndexes = new StringBuilder("");
int ZeroPosition = 0;        //for the indexes which will remain blank until the next loop-
int charPosition = 1;
int RepeatTime = 0;       //1 thru final --^-                         1^
while (NumberHalf > 0)   //find and replace the char that was repeated within the string, 'AccountableToRepeats', with something that we can decipher later, during decryption- 
{

    RepeatIndexes.Insert(ZeroPosition, "~"); //inserting a squiggly line until next loop-
    char InsertThis = indexJustForRepetas[IndexOfIndexes[RepeatTime]];   //find char at IndexOfIndexes to add into position-
    RepeatIndexes.Insert (charPosition, InsertThis);
    RepeatTime =RepeatTime +2;
    ZeroPosition = ZeroPosition + 2; 
    NumberHalf = NumberHalf - 1;
}

индекс волнистых линий ('~') начинается с 0: int ZeroPosition = 0;

Индекс символов («X») начинается с 1: int charPosition = 1;.

Но по какой-то причине я получаю такой вывод: ~XXX~~

когда должно быть: ~X~X~X

Я что-то не понимаю в природе построителя строк или insert()? Цикл выглядит так, как будто он должен увеличиваться правильно, но вывод просто не имеет для меня никакого смысла.

Надеюсь, это вопросы в рамках уместности для данной услуги.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновлено:

Думаю проблема в том, что charPosition не обновляется. Вам необходимо обновить charPosition с теми же значениями, что и RepeatTime и ZeroPosition. Итак, добавьте charPosition += 2; в цикл while. Что происходит, так это то, что 'X' всегда вставляется в позицию 1 (позиция после первого ~).

Кроме того, вы слишком усложняете его, используя Insert и все эти индексы. RepeatTime и ZeroPosition имеют одинаковое значение, поэтому вам не нужны оба.

Вы можете использовать StringBuilder.Append() для добавления текста в конец строки. Я использовал строковую интерполяцию ${var} и предполагал numberHalf = 3, но это должно делать то, что вы хотите:

    StringBuilder repeatIndexes = new StringBuilder();
    int numberHalf = 3;
    // int repeatTime = 0;
    while (numberHalf > 0)
    {
        // replace below line with your char in array
        char insertThis = 'X'; //indexJustForRepetas[IndexOfIndexes[repeatTime]];   
        repeatIndexes.Append($"~{insertThis}");
        // repeatTime += 1 // needed for array call above. +1 or +2 depending on your intention
        numberHalf = numberHalf - 1;
    }
    var outString = repeatIndexes.ToString();


    output:
    ~X~X~X

Вы можете разделить строку repeatIndexes.Append($"~{insertThis}") на 2, если хотите:

repeatIndexes.Append("~");
repeatIndexes.Append(insertThis);

Ух ты. Я делал этот путь слишком сложным, хахахаха, большое вам спасибо !!!!

Jponder23 15.12.2018 05:20

Другие вопросы по теме