Get range given endpoints

Hi EE:

I would like to get a range of alphabets or numbers (integers, whole numbers etc) given endpoints. Say, I provide a string "a,z", I should be able to get back a string a,b,c,d,e,f,...,x,y,z and likewise for numbers. How would be the easiest way to accomplish this?

thx
LuckyLucksAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
joechinaConnect With a Mentor Commented:
static string getRange(string input)
        {
            StringBuilder sb = new StringBuilder();
            string[] s = input.Split(',');
            int start;
            if (int.TryParse(s[0], out start)) //Number
            {
                int end = int.Parse(s[1]);
                for (int n = start; n <= end; n++)
                {
                    sb.Append(n.ToString()).Append(',');
                }
            }
            else //Char
            {
                for (char i = s[0].ToCharArray()[0]; i <= s[1].ToCharArray()[0]; i++)
                {
                    sb.Append(i).Append(',');
                }
            }
            return sb.Remove(sb.Length - 1, 1).ToString();
        }
0
 
joechinaCommented:
have you tried

Convert the input to two ascii number,
Add all chars between those two numbers?

0
 
LuckyLucksAuthor Commented:
if you can provide the code for that you will get the cake ;)
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
joechinaCommented:
static string getRange(string input)
 {
            StringBuilder sb = new StringBuilder(30);
            char[] range = input.ToCharArray();
            for (char i = range[0]; i <= range[2]; i++)
            {
                sb.Append(i).Append(',');
            }
            return sb.Remove(sb.Length - 1,1).ToString();
 }

Assume the input is in the format of "x,y"  y > x
0
 
LuckyLucksAuthor Commented:
I am not sure how this will handle somthing like "0,15". I am expecting the correct answer of "1,14" but I get "1,0". Is there a way to make the last char '15' give 14 and not 0?

thx
0
 
LuckyLucksAuthor Commented:
One minor request, could this be modifed as  "0-15" will return "1-14" (no need for iterating a list as 1,2,3,4,....14). Also, can this be restricted so that the lower bound doesnt go lesser than 0?

many thx
0
 
LuckyLucksAuthor Commented:
BTW I also get an error saying TryParse doesnt exist for int. Looking that up, it exists for Double
0
 
joechinaCommented:
Are you using .net 1.1?

In this case, you can use Parse and capture exception.

To get 1-14 is simple, add 1 to start and minus 1 from end then create your return string.
You can verify the start to make sure it's greater than 0.
change
 for (int n = start; n <= end; n++)
 {
         sb.Append(n.ToString()).Append(',');
 }
to
return (start + 1).ToString() + "-" + (end - 1).ToString;


For character,

return (s[0].ToCharArray()[0] + 1).ToString() + "-" + (s[1].ToCharArray()[0] + 1).ToString();
0
All Courses

From novice to tech pro — start learning today.