c# पैम को कम करने के लिए सी#स्ट्रिंग प्रारूप ध्वज या संशोधक




string formatting (2)

संक्षेप में, नहीं; AFAIK आपको स्रोत मानों को ठीक करना होगा, या string.Format लिए अपने स्वयं के प्रतिस्थापन का string.Format । ध्यान दें कि यदि आप एक कस्टम कल्चर ( s.ToLower() से s.ToLower() में गुजर रहे हैं, तो आप संस्कृति का उपयोग करना चाह सकते हैं।

क्या यह स्ट्रिंग प्रारूप पर किसी प्रकार का झंडा या संशोधक निर्दिष्ट करना संभव है ताकि इसे कम मामला या ऊपरी मामला बनाया जा सके?

मुझे क्या चाहिए इसका उदाहरण:

String.Format("Hi {0:touppercase}, you have {1} {2:tolowercase}.", "John", 6, "Apples");

चाहता था उत्पादन:

हाय जॉन, आपके पास 6 सेब हैं।

पुनश्च: हाँ, मुझे पता है कि मैं स्ट्रिंग प्रारूप में उपयोग करने से पहले परम के मामले को बदल सकता हूं, लेकिन मैं यह नहीं चाहता।


केवल पैडिंग और एलाइनमेंट फॉर्मिंग है ... इसलिए आसान तरीका है जैसा आपने कहा, "John".ToUpper() या "John".ToLower()

एक अन्य समाधान एक कस्टम IFormatProvider बनाया जा सकता है, जो आप चाहते हैं स्ट्रिंग प्रारूप प्रदान करने के लिए।

यह है कि कैसे IFormatProvider और IFormatProvider दिखेगा।

public class CustomStringFormat : IFormatProvider, ICustomFormatter
{
    public object GetFormat(Type formatType)
    {
        if (formatType == typeof(ICustomFormatter))
            return this;
        else
            return null;

    }

    public string Format(string format, object arg, IFormatProvider formatProvider)
    {
        string result = arg.ToString();

        switch (format.ToUpper())
        {
            case "U": return result.ToUpper();
            case "L": return result.ToLower();
            //more custom formats
            default: return result;
        }
    }
}

और कॉल की तरह दिखेगा:

String.Format(new CustomStringFormat(), "Hi {0:U}", "John");




formatting