2010-06-04 3 views
26

में स्ट्रिंग को प्रारूपित वहाँ कुछ इस तरह लेने के लिए एक अच्छा तरीका है:कॉलम

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

और कुछ इस तरह करने के लिए स्वरूपित:

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

का उपयोग स्ट्रिंग प्रारूप आदेशों?

यदि मैं बहुत लंबा हूं तो मुझे क्या करना है, इस पर भी लटका नहीं है। उदाहरण के लिए यह मेरे द्वारा ठीक होगा:

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

कुछ संदर्भ प्रदान करने के लिए। मेरे पास एक ड्रॉप डाउन बॉक्स है जो इस जानकारी के समान ही दिखाता है। अभी ड्रॉप डाउन में आइटम बनाने के लिए मेरा कोड इस तरह दिखता है:

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

मैं इसे बेहतर प्रारूपित करने का एक तरीका ढूंढ रहा हूं। कोई विचार?

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

HtmlDecode एक अंतरिक्ष कि अंतरिक्ष ड्रॉपडाउन सूची के स्वरूपण को हटाने का सामना कर सकते में परिवर्तन  :


यह है कि मैं क्या साथ समाप्त हो गया है।

उत्तर

54

आप String.Format का उपयोग कर Console.WriteLine या का उपयोग कर संरेखण के रूप में पाठ के कब्जे के साथ-साथ स्तंभों की संख्या निर्दिष्ट कर सकते हैं:

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

संख्या का उपयोग करना चाहते स्तंभों की संख्या निर्दिष्ट करता है और संकेत संरेखण निर्दिष्ट करता है (- बाएं संरेखण के लिए, सही संरेखण के लिए +)। इसलिए, यदि आप स्तंभों की संख्या पता उपलब्ध है, आप इस तरह उदाहरण के लिए कुछ लिख सकते हैं:

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

आप पूरी सूची के आधार पर स्तंभों की संख्या (उदाहरण के लिए सबसे लंबे समय तक नाम) की गणना करना चाहते हैं तो, तो आपको उस नंबर को अग्रिम में प्राप्त करना होगा और इसे अपने DropDownDisplay पर पैरामीटर के रूप में पास करना होगा - इसे स्वचालित रूप से करने का कोई तरीका नहीं है।

+0

अच्छा जवाब! मुझे लगता है कि यह काम करता है, लेकिन किसी कारण से, ड्रॉप डाउन को देखते समय, यह काम नहीं कर रहा है। मुझे लगता है कि कुछ अतिरिक्त रिक्त स्थान को हटा रहा है। :( – Vaccano

+0

मुझे स्पेस के बजाय   डालने का कोई तरीका ढूंढना होगा। – Vaccano

+1

यदि आपको   का उपयोग करने की आवश्यकता है, तो बस एक स्ट्रिंग करें। प्रारूप के बाद बदलें। वापसी String.Format ("{0, -10} - {1 , -10}, {2, 10} - {3,5} "), नाम, शहर, राज्य, आईडी)। जगह (" ","   "); –

0

टॉमस के उत्तर के अलावा मैं बस यह इंगित करना चाहता हूं कि स्ट्रिंग इंटरपोलेशन का उपयोग सी # 6 या नए में किया जा सकता है।

// with string format 
var columnHeaders1 = string.Format($"|{0,-30}|{1,-4}|{2,-15}|{3,-30}|{4,-30}|{5,-30}|{6,-30}", "ColumnA", "ColumnB", "ColumnC", "ColumnD", "ColumnE", "ColumnF", "ColumnG"); 

// with string interpolation 
var columnHeaders2 = $"|{"ColumnA",-30}|{"ColumnB",-4}|{"ColumnC",-15}|{"ColumnD",-30}|{"ColumnE",-30}|{"ColumnF",-30}|{"ColumnG",-30}";