Solved

# Get range given endpoints

Posted on 2006-11-01
222 Views
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
0
Question by:LuckyLucks
• 4
• 4

LVL 13

Expert Comment

ID: 17852256
have you tried

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

0

Author Comment

ID: 17853588
if you can provide the code for that you will get the cake ;)
0

LVL 13

Expert Comment

ID: 17858101
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

Author Comment

ID: 17867214
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

LVL 13

Accepted Solution

joechina earned 500 total points
ID: 17867427
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

Author Comment

ID: 17867550
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

Author Comment

ID: 17867598
BTW I also get an error saying TryParse doesnt exist for int. Looking that up, it exists for Double
0

LVL 13

Expert Comment

ID: 17869131
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

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
Progress