增量计数并将所有值保存在一个字符串中

Incremental counting and saving all values in one string

我无法想出实现此目标的合乎逻辑的方法。我有一个方法发送带有 for 循环的 Web 请求,该循环从 1 计数到 x,请求计数直到找到特定响应,然后将 URL + 数字发送到另一个方法。

在此之后,说我们得到了数字 5,我需要创建一个显示为“1,2,3,4,5”的字符串,但似乎无法找到创建整个字符串的方法,所有我try 只是替换字符串,只保留最后一个数字。

string unionMod = string.Empty;

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

我以为我可以简单地将每个值添加到字符串的末尾,但输出只是“5”,它是最后一个数字。我环顾四周,但我似乎什至想不出为了得到答案我会搜索什么,我有一个硬编码的解决方案,但理想情况下,我不希望每个可能的值都有 30 多个字符串并在需要时创建它。

有什么指点吗?

P.S:感谢任何编码示例,但我可能只是忘记了一些明显的东西,所以非常感谢您提供的任何指导,我应该睡觉了,但我正在通宵编码研磨。

谢谢!

首先你的问题是+=。您应该避免连接字符串,因为它会分配一个新字符串。相反,您应该使用 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);
    }

如前所述,您应该使用 += 而不是 =+。后者表示"take count and append a comma to it",这是您遇到的错误结果。

您也可以像这样简化代码:

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

Enumerable.Range 在其两个参数之间生成一个整数序列,然后 String.Join 将它们与给定的分隔符连接起来。