У меня есть следующий код, который предназначен для перебора и добавления значений к строковому значению.
Каждое другое значение, начиная с индекса 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()?
Цикл выглядит так, как будто он должен увеличиваться правильно, но вывод просто не имеет для меня никакого смысла.
Надеюсь, это вопросы в рамках уместности для данной услуги.





Обновлено:
Думаю проблема в том, что 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);
Ух ты. Я делал этот путь слишком сложным, хахахаха, большое вам спасибо !!!!