Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Format a string into columns

Is there a cool way to take something like this:

Customer Name - City, State - ID Bob Whiley - Howesville, TN - 322 Marley Winchester - Old Towne, CA - 5653 

and format it to something like this:

Customer Name     - City,       State - ID Bob Whiley        - Howesville, TN    - 322 Marley Winchester - Old Towne,  CA    - 5653 

Using string format commands?

I am not too hung up on what to do if one is very long. For example this would be ok by me:

Customer Name     - City,       State - ID Bob Whiley        - Howesville, TN    - 322 Marley Winchester - Old Towne,  CA    - 5653 Super Town person - Long Town Name, WA- 45648  

To provide some context. I have a drop down box that shows info very similar to this. Right now my code to create the item in the drop down looks like this:

public partial class CustomerDataContract {     public string DropDownDisplay     {         get         {              return  Name + " - " + City + ",  " + State + " - " + ID;         }     } } 

I am looking for a way to format this better. Any ideas?


This is what I ended up with:

HttpContext.Current.Server.HtmlDecode(     String.Format("{0,-27} - {1,-15}, {2, 2} - {3,5}",      Name, City, State, ID)     .Replace(" ", " ")); 

The HtmlDecode changes the   to a space that can withstand the space removing formatting of the dropdown list.

like image 593
Vaccano Avatar asked Jun 04 '10 23:06

Vaccano


People also ask

Can you format a string in Python?

Python uses C-style string formatting to create new, formatted strings. The "%" operator is used to format a set of variables enclosed in a "tuple" (a fixed size list), together with a format string, which contains normal text together with "argument specifiers", special symbols like "%s" and "%d".

What is formatting string in Java?

In java, String format() method returns a formatted string using the given locale, specified format string, and arguments. We can concatenate the strings using this method and at the same time, we can format the output concatenated string.

What is formatted string in C++?

The sprintf() function in C++ is used to write a formatted string to character string buffer. It is defined in the cstdio header file.


1 Answers

You can specify the number of columns occupied by the text as well as alignment using Console.WriteLine or using String.Format:

// Prints "--123       --" Console.WriteLine("--{0,-10}--", 123); // Prints "--       123--" Console.WriteLine("--{0,10}--", 123); 

The number specifies the number of columns you want to use and the sign specifies alignment (- for left alignment, + for right alignment). So, if you know the number of columns available, you could write for example something like this:

public string DropDownDisplay {    get {      return String.Format("{0,-10} - {1,-10}, {2, 10} - {3,5}"),       Name, City, State, ID);   }  }  

If you'd like to calculate the number of columns based on the entire list (e.g. the longest name), then you'll need to get that number in advance and pass it as a parameter to your DropDownDisplay - there is no way to do this automatically.

like image 50
Tomas Petricek Avatar answered Sep 18 '22 09:09

Tomas Petricek