Инкрементальный подсчет и сохранение всех значений в одну строку - PullRequest
0 голосов
/ 10 июля 2019

Мне сложно придумать логичный способ добиться этого. У меня есть метод, который отправляет веб-запрос с циклом for, который считает от 1 до x, запрос считается до тех пор, пока не найдет конкретный ответ, а затем отправляет URL + номер другому методу.

После этого, говоря, что мы получили число 5, мне нужно создать строку, которая будет отображаться как «1,2,3,4,5», но не может найти способ создать всю строку, все, что я пытаюсь сделать, это просто заменив строку и сохранив только последний номер.

string unionMod = string.Empty;

        for (int i = 1; i <= count; i++)
        {
            unionMod =+ count + ",";
        }

Я предполагал, что смогу просто добавить каждое значение в конец строки, но на выходе получится просто «5», причем последнее число будет последним. Я оглянулся, но даже не могу придумать, что я буду искать, чтобы получить ответ, у меня есть жестко запрограммированное решение, но в идеале я бы хотел, чтобы не было более 30 строк с каждым возможным значением и просто создайте его при необходимости.

Есть указатели?

P.S .: Любые примеры кодирования приветствуются, но я, вероятно, просто забыл что-то очевидное, поэтому любые указания, которые вы можете дать, очень ценятся, я должен спать, но я нахожусь на одной из тех ночных заторов кодирования.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Прежде всего, ваша проблема - +=.Вы должны избегать объединения строк, потому что это выделяет новую строку.Вместо этого вы должны использовать StringBuilder.

Ваш пример: https://dotnetfiddle.net/Widget/qQIqWx

Мой пример: https://dotnetfiddle.net/Widget/sx7cxq

    public static void Main()
    {
        var counter = 5;

        var sb = new StringBuilder();

        for(var i = 1; i <= counter; ++i) {
            sb.Append(i);

            if (i != counter) {
               sb.Append(",");
            }
        }

        Console.WriteLine(sb);
    }
1 голос
/ 10 июля 2019

Как уже было отмечено, вы должны использовать += вместо =+.Последнее означает «считать и добавить к нему запятую», что является неверным результатом, который вы получили.

Вы также можете упростить свой код следующим образом:

int count = 10;
string unionMod = String.Join(",", Enumerable.Range(1, count));

Enumerable.Range создаетпоследовательность целых чисел между двумя параметрами и String.Join соединяет их с указанным символом-разделителем.

...