.NET निश्चित रिक्त स्थान के साथ एक स्ट्रिंग प्रारूपित करें




string (7)

क्या .NET String.Format विधि एक निश्चित लंबाई स्ट्रिंग के भीतर एक निश्चित स्थिति पर एक स्ट्रिंग के प्लेसमेंट की अनुमति देता है।

"           String Goes Here"
"     String Goes Here      "
"String Goes Here           "

यह .NET का उपयोग करके कैसे किया जाता है?

संपादित करें - मैंने मृत्यु के लिए प्रारूप / पैडलफ्ट / पैडराइट की कोशिश की है। वो काम नहीं करते हैं। मुझे नहीं पता क्यों। मैं ऐसा करने के लिए अपना खुद का काम लिखना समाप्त कर दिया।

संपादित करें - मैंने गलती की और स्वरूप विनिर्देशक में अल्पविराम के बजाय एक कोलन का उपयोग किया। "{0,20}" होना चाहिए।

सभी उत्कृष्ट और सही उत्तरों के लिए धन्यवाद।


आपको PadLeft और PadRight दिखाया गया है। यह लापता PadCenter भर जाएगा।

public static class StringUtils
{
    public static string PadCenter(this string s, int width, char c)
    {
        if (s == null || width <= s.Length) return s;

        int padding = width - s.Length;
        return s.PadLeft(s.Length + padding / 2, c).PadRight(width, c);
    }
}

स्वयं को ध्यान दें: अपने सीवी को अपडेट करना न भूलें: "एक दिन, मैंने जोएल कोहौर्न के कोड को भी तय किया!" ;- डी-सर्ज


इसे इस्तेमाल करे:

"String goes here".PadLeft(20,' ');
"String goes here".PadRight(20,' ');

केंद्र के लिए स्ट्रिंग की लंबाई मिलती है और आवश्यक वर्णों के साथ पैड बाएं और पैडराइट करें

int len = "String goes here".Length;
int whites = len /2;
"String goes here".PadRight(len + whites,' ').PadLeft(len + whites,' ');

चर्चा के लिए धन्यवाद, यह विधि भी काम करती है (वीबी):

Public Function StringCentering(ByVal s As String, ByVal desiredLength As Integer) As String
    If s.Length >= desiredLength Then Return s
    Dim firstpad As Integer = (s.Length + desiredLength) / 2
    Return s.PadLeft(firstpad).PadRight(desiredLength)
End Function
  1. स्ट्रिंग केंद्र () दो इनपुट मान लेता है और यह एक स्वरूपित स्ट्रिंग देता है।
  2. जब लंबाई की लंबाई deisredLength से अधिक या बराबर होती है , तो फ़ंक्शन मूल स्ट्रिंग देता है।
  3. जब लंबाई की लंबाई वांछित लम्बाई से छोटी होती है, तो यह दोनों सिरों को गद्देदार कर दिया जाएगा।
  4. चरित्र अंतर के कारण पूर्णांक है और कोई आधा स्थान नहीं है, हमारे पास अंतरिक्ष का असमान विभाजन हो सकता है। इस कार्यान्वयन में, अधिक विभाजित अग्रणी अंत तक जाता है।
  5. फ़ंक्शन को पैडलिफ्ट () और पैडराइट () के कारण .NET Framework की आवश्यकता होती है।
  6. फ़ंक्शन की आखिरी पंक्ति में, बाइंडिंग बाएं से दाएं है, इसलिए वांछित लम्बाई पैड के बाद फर्स्टपैड लागू होता है।

सी # संस्करण यहां है:

public string StringCentering(string s, int desiredLength)
{
    if (s.Length >= desiredLength) return s;
    int firstpad = (s.Length + desiredLength) / 2;
    return s.PadLeft(firstpad).PadRight(desiredLength);
}

समझने में सहायता के लिए, पूर्णांक चरणीय firstpad का उपयोग किया जाता है। एस। पैडलिफ्ट (फर्स्टपैड ) प्रमुख सफेद रिक्त स्थान (सही संख्या ) लागू करता है। दाएं सबसे अधिक पैडराइट (वांछित लम्बाई) में पीछे की सफेद जगहों को लागू करके कम बाध्यकारी खत्म होता है।


पहला और अंतिम, कम से कम, निम्न वाक्यविन्यास का उपयोग कर संभव है:

String.Format("{0,20}", "String goes here");
String.Format("{0,-20}", "String goes here");

यह आपको वास्तव में तारों के बारे में बताएगा:

string s = "String goes here";
string lineAlignedRight  = String.Format("{0,27}", s);
string lineAlignedCenter = String.Format("{0,-27}",
    String.Format("{0," + ((27 + s.Length) / 2).ToString() +  "}", s));
string lineAlignedLeft   = String.Format("{0,-27}", s);

यहां एक वीबी.NET संस्करण बनाया गया है, जिसे जोएल कोहौर्न के जवाब, ओलिवर के संपादन से प्रेरित, और शुनमार्टिन की टिप्पणी:

    <Extension()>
Public Function PadCenter(ByVal [string] As String, ByVal width As Integer, ByVal c As Char) As String

    If [string] Is Nothing Then [string] = String.Empty
    If (width <= [string].Length) Then Return [string]

    Dim padding = width - [string].Length
    Return [string].PadLeft([string].Length + (padding \ 2), c).PadRight(width, c)

End Function

<Extension()>
Public Function PadCenter(ByVal [string] As String, ByVal width As Integer) As String

    If [string] Is Nothing Then [string] = String.Empty
    If (width <= [string].Length) Then Return [string]

    Dim padding = width - [string].Length
    Return [string].PadLeft([string].Length + (padding \ 2)).PadRight(width)

End Function

यह एक सार्वजनिक मॉड्यूल के अंदर एक स्ट्रिंग एक्सटेंशन के रूप में स्थापित किया गया है (जिस तरह से आप VB.NET में एक्सटेंशन करते हैं, सी # से थोड़ा अलग)। मेरा मामूली परिवर्तन यह है कि यह एक खाली स्ट्रिंग को एक खाली स्ट्रिंग के रूप में मानता है, और यह चौड़ाई मान के साथ एक खाली स्ट्रिंग पैड करता है (मेरी विशेष ज़रूरतों को पूरा करता है)। उम्मीद है कि यह किसी भी व्यक्ति के लिए आसानी से सी # में परिवर्तित हो जाएगा। यदि ऊपर वर्णित उत्तरों, संपादन और टिप्पणियों का संदर्भ देने का एक बेहतर तरीका है, जिसने मेरी पोस्ट को प्रेरित किया है, तो कृपया मुझे बताएं और मैं इसे करूँगा - मैं पोस्ट करने के लिए अपेक्षाकृत नया हूं, और मैं समझ नहीं पाया एक टिप्पणी छोड़ दो (शायद अभी तक पर्याप्त प्रतिनिधि नहीं है)।


/// <summary>
/// Returns a string With count chars Left or Right value
/// </summary>
/// <param name="val"></param>
/// <param name="count"></param>
/// <param name="space"></param>
/// <param name="right"></param>
/// <returns></returns>
 public static string Formating(object val, int count, char space = ' ', bool right = false)
{
    var value = val.ToString();
    for (int i = 0; i < count - value.Length; i++) value = right ? value + space : space + value;
    return value;
}





string