我在思考实现这一目标的逻辑方法时遇到了麻烦。我有一个方法,该方法发送一个带有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:任何编码示例都值得赞赏,但我可能只是忘记了一些显而易见的内容,因此,您可以给出的任何指示都将受到赞赏,我应该睡觉,但我正在整夜从事编码工作。
谢谢!
答案 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
用给定的分隔符将它们连接起来。