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

时间:2019-07-10 09:55:22

标签: c# string increment

我在思考实现这一目标的逻辑方法时遇到了麻烦。我有一个方法,该方法发送一个带有for循环的Web请求,该请求从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 个答案:

答案 0 :(得分:2)

首先,您的问题是+=。您应该避免串联字符串,因为它会分配新的字符串。相反,您应该使用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 :(得分:1)

如前所述,您应该使用+=而不是=+。后者的意思是“计算并在其后加上逗号”,这是您遇到的错误结果。

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

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

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