Solved

Get range given endpoints

Posted on 2006-11-01
8
222 Views
Last Modified: 2012-05-05
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
Comment
Question by:LuckyLucks
  • 4
  • 4
8 Comments
 
LVL 13

Expert Comment

by:joechina
ID: 17852256
have you tried

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

0
 

Author Comment

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

Expert Comment

by:joechina
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
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 

Author Comment

by:LuckyLucks
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

by:
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

by:LuckyLucks
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

by:LuckyLucks
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

by:joechina
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

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

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…

820 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question