LuckyLucks
asked on
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
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
ASKER
if you can provide the code for that you will get the cake ;)
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
{
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
ASKER
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
thx
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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
many thx
ASKER
BTW I also get an error saying TryParse doesnt exist for int. Looking that up, it exists for Double
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()).Ap pend(',');
}
to
return (start + 1).ToString() + "-" + (end - 1).ToString;
For character,
return (s[0].ToCharArray()[0] + 1).ToString() + "-" + (s[1].ToCharArray()[0] + 1).ToString();
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()).Ap
}
to
return (start + 1).ToString() + "-" + (end - 1).ToString;
For character,
return (s[0].ToCharArray()[0] + 1).ToString() + "-" + (s[1].ToCharArray()[0] + 1).ToString();
Convert the input to two ascii number,
Add all chars between those two numbers?