James D
James D

Reputation: 351

Incremental counting and saving all values in one string

I'm having trouble thinking of a logical way to achieve this. I have a method which sends a web request with a for loop that is counting up from 1 to x, the request counts up until it finds a specific response and then sends the URL + number to another method.

After this, saying we got the number 5, I need to create a string which displays as "1,2,3,4,5" but cannot seem to find a way to create the entire string, everything I try is simply replacing the string and only keeping the last number.

string unionMod = string.Empty;

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

I assumed I'd be able to simply add each value onto the end of the string but the output is just "5," with it being the last number. I have looked around but I can't seem to even think of what I would search in order to get the answer, I have a hard-coded solution but ideally, I'd like to not have a 30+ string with each possible value and just have it created when needed.

Any pointers?

P.S: Any coding examples are appreciated but I've probably just forgotten something obvious so any directions you can give are much appreciated, I should sleep but I'm on one of those all-night coding grinds.

Thank you!

Upvotes: 0

Views: 556

Answers (2)

Marco Talento
Marco Talento

Reputation: 2395

First of all your problem is the +=. You should avoid concatenating strings because it allocates a new string. Instead you should use a StringBuilder.

Your Example: https://dotnetfiddle.net/Widget/qQIqWx

My Example: 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);
    }

Upvotes: 2

pappbence96
pappbence96

Reputation: 1204

As it's been pointed out, you should use += instead of =+. The latter means "take count and append a comma to it", which is the incorrect result you experienced.

You could also simplify your code like this:

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

Enumerable.Range generates a sequence of integers between its two parameters and String.Join joins them up with the given separator character.

Upvotes: 1

Related Questions