खोज…


परिचय

Format विधियाँ System.String में ओवरलोड का एक सेट हैं। स्ट्रिंग को विशिष्ट स्ट्रिंग अभ्यावेदन में वस्तुओं को संयोजित करने के लिए उपयोग की जाने वाली स्ट्रिंग में बनाने के लिए प्रयोग किया जाता है। यह जानकारी String.Format , विभिन्न WriteLine विधियों के साथ-साथ .NET फ्रेमवर्क में अन्य विधियों पर लागू की जा सकती है।

वाक्य - विन्यास

  • string.Format (string format, params object [] args)
  • string.Format (IFormatProvider प्रदाता, string format, params object [] args)
  • $ "स्ट्रिंग {टेक्स्ट} ब्लोबैब्ला" // सी # 6 के बाद से

पैरामीटर

पैरामीटर विवरण
प्रारूप एक समग्र प्रारूप स्ट्रिंग , जो निर्धारित करता है कि जिस तरह से आर्गन्स को एक स्ट्रिंग में जोड़ा जाना चाहिए।
आर्ग वस्तुओं के एक क्रम को एक स्ट्रिंग में संयोजित किया जाना है। चूंकि यह एक params तर्क का उपयोग करता है, आप या तो तर्कों की अल्पविराम से अलग सूची या वास्तविक ऑब्जेक्ट सरणी का उपयोग कर सकते हैं।
प्रदाता तार को ऑब्जेक्ट स्वरूपित करने के तरीकों का एक संग्रह। विशिष्ट मूल्यों में CultureInfo.InvariantCulture और CultureInfo.CurrentCulture शामिल हैं

टिप्पणियों

टिप्पणियाँ:

  • String.Format() एक अपवाद को फेंकने के बिना null तर्कों को संभालता है।
  • ऐसे अधिभार हैं जो args पैरामीटर को एक, दो या तीन ऑब्जेक्ट पैरामीटर के साथ बदलते हैं।

वे जगहें जहाँ String.Format फ्रेमवर्क में 'एम्बेडेड' है

ऐसे कई स्थान हैं जहाँ आप String.Format अप्रत्यक्ष रूप से उपयोग कर सकते हैं: रहस्य यह है कि हस्ताक्षर string format, params object[] args , जैसे:

Console.WriteLine(String.Format("{0} - {1}", name, value));

छोटे संस्करण के साथ प्रतिस्थापित किया जा सकता है:

Console.WriteLine("{0} - {1}", name, value);

अन्य तरीके भी हैं जो String.Format का String.Format जैसे:

Debug.WriteLine(); // and Print()
StringBuilder.AppendFormat();

कस्टम संख्या प्रारूप का उपयोग करना

NumberFormatInfo का उपयोग पूर्णांक और फ्लोट संख्या दोनों को स्वरूपित करने के लिए किया जा सकता है।

// invariantResult is "1,234,567.89"
var invarianResult = string.Format(CultureInfo.InvariantCulture, "{0:#,###,##}", 1234567.89);

// NumberFormatInfo is one of classes that implement IFormatProvider
var customProvider = new NumberFormatInfo
{
    NumberDecimalSeparator = "_NS_", // will be used instead of ','
    NumberGroupSeparator = "_GS_", // will be used instead of '.'
};

// customResult is "1_GS_234_GS_567_NS_89"
var customResult = string.Format(customProvider, "{0:#,###.##}", 1234567.89);

एक कस्टम प्रारूप प्रदाता बनाएँ

public class CustomFormat : IFormatProvider, ICustomFormatter
{
    public string Format(string format, object arg, IFormatProvider formatProvider)
    {
        if (!this.Equals(formatProvider))
        {
            return null;
        }

        if (format == "Reverse")
        {
            return String.Join("", arg.ToString().Reverse());
        }

        return arg.ToString();
    }

    public object GetFormat(Type formatType)
    {
        return formatType==typeof(ICustomFormatter) ? this:null;
    }
}

उपयोग:

String.Format(new CustomFormat(), "-> {0:Reverse} <-", "Hello World");

आउटपुट:

-> dlroW olleH <-

बाएँ / दाएँ संरेखित करें, रिक्त स्थान के साथ पैड

घुंघराले ब्रेसिज़ में दूसरा मूल्य प्रतिस्थापन स्ट्रिंग की लंबाई निर्धारित करता है। सकारात्मक या नकारात्मक होने के लिए दूसरे मूल्य को समायोजित करके, स्ट्रिंग के संरेखण को बदला जा सकता है।

string.Format("LEFT:  string: ->{0,-5}<- int: ->{1,-5}<-", "abc", 123);
string.Format("RIGHT: string: ->{0,5}<- int: ->{1,5}<-", "abc", 123);

आउटपुट:

LEFT:  string: ->abc  <- int: ->123  <-
RIGHT: string: ->  abc<- int: ->  123<-

सांख्यिक स्वरूप

// Integral types as hex
string.Format("Hexadecimal: byte2: {0:x2}; byte4: {0:X4}; char: {1:x2}", 123, (int)'A');

// Integers with thousand separators
string.Format("Integer, thousand sep.: {0:#,#}; fixed length: >{0,10:#,#}<", 1234567);

// Integer with leading zeroes
string.Format("Integer, leading zeroes: {0:00}; ", 1);

// Decimals
string.Format("Decimal, fixed precision: {0:0.000}; as percents: {0:0.00%}", 0.12);

आउटपुट:

Hexadecimal: byte2: 7b; byte4: 007B; char: 41
Integer, thousand sep.: 1,234,567; fixed length: > 1,234,567<
Integer, leading zeroes: 01; 
Decimal, fixed precision: 0.120; as percents: 12.00%

मुद्रा स्वरूपण

"सी" (या मुद्रा) प्रारूप निर्दिष्ट एक संख्या को एक स्ट्रिंग में परिवर्तित करता है जो एक मुद्रा राशि का प्रतिनिधित्व करता है।

string.Format("{0:c}", 112.236677) // $112.23 - defaults to system

शुद्धता

डिफ़ॉल्ट 2 है। परिशुद्धता को नियंत्रित करने के लिए c1, c2, c3 इत्यादि का उपयोग करें।

string.Format("{0:C1}", 112.236677) //$112.2
string.Format("{0:C3}", 112.236677) //$112.237
string.Format("{0:C4}", 112.236677) //$112.2367
string.Format("{0:C9}", 112.236677) //$112.236677000

मुद्रा चिन्ह

  1. कस्टम CultureInfo का उपयोग करने के लिए CultureInfo इंस्टेंस पास करें।
string.Format(new CultureInfo("en-US"), "{0:c}", 112.236677); //$112.24
string.Format(new CultureInfo("de-DE"), "{0:c}", 112.236677); //112,24 €
string.Format(new CultureInfo("hi-IN"), "{0:c}", 112.236677); //₹ 112.24
  1. मुद्रा प्रतीक के रूप में किसी भी स्ट्रिंग का उपयोग करें। मुद्रा प्रतीक को अनुकूलित करने के लिए NumberFormatInfo उपयोग करें।
NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat;
nfi = (NumberFormatInfo) nfi.Clone();
nfi.CurrencySymbol = "?";
string.Format(nfi, "{0:C}", 112.236677); //?112.24
nfi.CurrencySymbol = "?%^&";
string.Format(nfi, "{0:C}", 112.236677); //?%^&112.24

मुद्रा प्रतीक की स्थिति

सकारात्मक मूल्यों के लिए CurrencyPositivePattern और नकारात्मक मानों के लिए CurrencyNegativePattern का उपयोग करें।

NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat;        
nfi.CurrencyPositivePattern = 0;
string.Format(nfi, "{0:C}", 112.236677); //$112.24 - default
nfi.CurrencyPositivePattern = 1;
string.Format(nfi, "{0:C}", 112.236677); //112.24$
nfi.CurrencyPositivePattern = 2;
string.Format(nfi, "{0:C}", 112.236677); //$ 112.24
nfi.CurrencyPositivePattern = 3; 
string.Format(nfi, "{0:C}", 112.236677); //112.24 $

नकारात्मक पैटर्न का उपयोग सकारात्मक पैटर्न के समान है। बहुत अधिक उपयोग के मामले मूल लिंक को देखें।

कस्टम दशमलव विभाजक

NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat;        
nfi.CurrencyPositivePattern = 0;
nfi.CurrencyDecimalSeparator = "..";
string.Format(nfi, "{0:C}", 112.236677); //$112..24

चूंकि C # 6.0

6.0

C # 6.0 के बाद से String.Format स्थान पर स्ट्रिंग इंटरपोलेशन का उपयोग करना संभव है।

string name = "John";
string lastname = "Doe";
Console.WriteLine($"Hello {name} {lastname}!");

हैलो जॉन डो!

सी # 6.0 विषय के तहत इसके लिए अधिक उदाहरण: स्ट्रिंग इंटरपोलेशन

String.Format () अभिव्यक्ति के अंदर घुंघराले कोष्ठक से बचना

string outsidetext = "I am outside of bracket";
string.Format("{{I am in brackets!}} {0}", outsidetext);

//Outputs "{I am in brackets!} I am outside of bracket"

दिनांक स्वरूपण

DateTime date = new DateTime(2016, 07, 06, 18, 30, 14);
// Format: year, month, day hours, minutes, seconds

Console.Write(String.Format("{0:dd}",date)); 

//Format by Culture info
String.Format(new System.Globalization.CultureInfo("mn-MN"),"{0:dddd}",date);
6.0
Console.Write($"{date:ddd}");

आउटपुट:

06
Лхагва
06
विनिर्देशक अर्थ नमूना परिणाम
दिनांक {0:d} 2016/07/06
dd दिन, शून्य-पेड {0:dd} 06
ddd छोटे दिन का नाम {0:ddd} बुध
dddd पूरे दिन का नाम {0:dddd} बुधवार
डी लंबी तारीख {0:D} 6 जुलाई 2016 को बुधवार है
पूर्ण तिथि और समय, छोटा {0:f} बुधवार, 6 जुलाई 2016 शाम 6:30 बजे
एफएफ दूसरा अंश, 2 अंक {0:ff} 20
FFF दूसरा अंश, 3 अंक {0:fff} 201
ffff दूसरा अंश, 4 अंक {0:ffff} 2016
एफ पूरी तारीख और समय, लंबा {0:F} बुधवार, 6 जुलाई, 2016 6:30:14 PM
जी डिफ़ॉल्ट दिनांक और समय {0:g} 7/6/2016 शाम 6:30 बजे
gg युग {0:gg}
hh घंटा (2 अंक, 12H) {0:hh} 06
एचएच घंटा (2 अंक, 24H) {0:HH} 18
महीना और दिन {0:M} 6 जुलाई
मिमी मिनट, शून्य-गद्देदार {0:mm} 30
एम.एम. महीना, शून्य-पेड {0:MM} 07
MMM 3-अक्षर महीने का नाम {0:MMM} जुलाई
MMMM पूरे महीने का नाम {0:MMMM} जुलाई
एस एस सेकंड {0:ss} 14
आर RFC1123 की तारीख {0:r} बुध, 06 जुलाई 2016 18:30:14 जीएमटी
रों सॉर्ट करने योग्य दिनांक स्ट्रिंग {0:s} 2016-07-06T18: 30: 14
टी कम समय {0:t} 06:30 शाम का समय
टी लंबे समय तक {0:T} 6:30:14 PM
टीटी दोपहर से पूर्व दोपहर के बाद {0:tt} PM
यू यूनिवर्सल सॉर्टेबल स्थानीय समय {0:u} 2016-07-06 18: 30: 14Z
यू यूनिवर्सल GMT {0:U} बुधवार, 6 जुलाई, 2016 9:30:14 पूर्वाह्न
Y महीना और साल {0:Y} जुलाई 2016
Y y 2 अंक वर्ष {0:yy} 16
yyyy 4 अंक वर्ष {0:yyyy} 2016
ZZ 2 अंक समयक्षेत्र ऑफसेट {0:zz} 09
zzz पूर्णकालिक क्षेत्र ऑफसेट {0:zzz} 09: 00

तार()

ToString () विधि सभी संदर्भ ऑब्जेक्ट प्रकारों पर मौजूद है। यह ऑब्जेक्ट से निकाली गई सभी संदर्भ प्रकारों के कारण है जिस पर इस पर ToString () विधि है। ऑब्जेक्ट बेस क्लास पर ToString () विधि टाइप नाम लौटाती है। नीचे का टुकड़ा कंसोल को "उपयोगकर्ता" प्रिंट करेगा।

public class User
{
    public string Name { get; set; }
    public int Id { get; set; }
}

...

var user = new User {Name = "User1", Id = 5};
Console.WriteLine(user.ToString());

हालाँकि, उपयोगकर्ता उस स्ट्रिंग को बदलने के लिए ToString () को ओवरराइड भी कर सकता है। नीचे दिए गए कोड के टुकड़े "Id: 5, Name: User1" को कंसोल में प्रिंट करते हैं।

public class User
{
    public string Name { get; set; }
    public int Id { get; set; }
    public override ToString()
    {
        return string.Format("Id: {0}, Name: {1}", Id, Name);
    }
}

...

var user = new User {Name = "User1", Id = 5};
Console.WriteLine(user.ToString());

ToString के साथ संबंध ()

हालांकि String.Format() विधि निश्चित रूप से डेटा को स्ट्रिंग्स के रूप में प्रारूपित करने में उपयोगी है, यह अक्सर थोड़ा ओवरकिल हो सकता है, खासकर जब एक वस्तु से निपटने के रूप में नीचे देखा गया है:

String.Format("{0:C}", money);  // yields "$42.00"

एक आसान तरीका केवल C # के भीतर सभी वस्तुओं पर उपलब्ध ToString() पद्धति का उपयोग करना हो सकता है। यह सभी समान मानक और कस्टम स्वरूपण स्ट्रिंग्स का समर्थन करता है, लेकिन इसके लिए आवश्यक पैरामीटर मैपिंग की आवश्यकता नहीं है क्योंकि केवल एक ही तर्क होगा:

money.ToString("C");  // yields "$42.00"

कैविट्स और फॉर्मेटिंग प्रतिबंध

हालांकि यह दृष्टिकोण कुछ परिदृश्यों में सरल हो सकता है, ToString() दृष्टिकोण बाएं या दाएं गद्दी को जोड़ने के संबंध में सीमित है जैसे आप String.Format() विधि के भीतर कर सकते हैं:

String.Format("{0,10:C}", money);  // yields "    $42.00"

ToString() विधि के साथ इस समान व्यवहार को पूरा करने के लिए, आपको क्रमशः PadLeft() या PadRight() जैसी अन्य विधि का उपयोग करने की आवश्यकता होगी:

money.ToString("C").PadLeft(10);  // yields "    $42.00"


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow