c# - स्ट्रिंग को शीर्षक केस में कनवर्ट करना




string (14)

मेरे पास एक स्ट्रिंग है जिसमें ऊपरी और निचले केस वर्णों के मिश्रण में शब्द शामिल हैं।

उदाहरण के लिए: string myData = "a Simple string";

मुझे ऊपरी मामले में प्रत्येक शब्द (रिक्त स्थान से अलग) के पहले अक्षर को बदलने की आवश्यकता है। तो मैं परिणाम के रूप में चाहता हूँ: string myData ="A Simple String";

क्या ऐसा करने का कोई आसान तरीका है? मैं स्ट्रिंग को विभाजित नहीं करना चाहता हूं और रूपांतरण करना चाहता हूं (यह मेरा अंतिम उपाय होगा)। इसके अलावा, यह गारंटी है कि तार अंग्रेजी में हैं।


अगर कोई कॉम्पैक्ट फ्रेमवर्क के समाधान के लिए इच्छुक है:

return String.Join(" ", thestring.Split(' ').Select(i => i.Substring(0, 1).ToUpper() + i.Substring(1).ToLower()).ToArray());

अपने कोड को आजमाकर समझना बेहतर है ...

और पढो

http://www.stupidcodes.com/2014/04/convert-string-to-uppercase-proper-case.html

1) एक स्ट्रिंग को अपरकेस में कनवर्ट करें

string lower = "converted from lowercase";
Console.WriteLine(lower.ToUpper());

2) एक स्ट्रिंग को लोअरकेस में कनवर्ट करें

string upper = "CONVERTED FROM UPPERCASE";
Console.WriteLine(upper.ToLower());

3) एक स्ट्रिंग को TitleCase में कनवर्ट करें

    CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
    TextInfo textInfo = cultureInfo.TextInfo;
    string txt = textInfo.ToTitleCase(TextBox1.Text());

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

using System.Globalization;
using System.Threading;
public void ToTitleCase(TextBox TextBoxName)
        {
            int TextLength = TextBoxName.Text.Length;
            if (TextLength == 1)
            {
                CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
                TextInfo textInfo = cultureInfo.TextInfo;
                TextBoxName.Text = textInfo.ToTitleCase(TextBoxName.Text);
                TextBoxName.SelectionStart = 1;
            }
            else if (TextLength > 1 && TextBoxName.SelectionStart < TextLength)
            {
                int x = TextBoxName.SelectionStart;
                CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
                TextInfo textInfo = cultureInfo.TextInfo;
                TextBoxName.Text = textInfo.ToTitleCase(TextBoxName.Text);
                TextBoxName.SelectionStart = x;
            }
            else if (TextLength > 1 && TextBoxName.SelectionStart >= TextLength)
            {
                CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
                TextInfo textInfo = cultureInfo.TextInfo;
                TextBoxName.Text = textInfo.ToTitleCase(TextBoxName.Text);
                TextBoxName.SelectionStart = TextLength;
            }
        }


टेक्स्टबॉक्स के टेक्स्ट चेंज किए गए ईवेंट में इस विधि को कॉल करें।


एमएसडीएन: TextInfo.ToTitleCase

सुनिश्चित करें कि आप शामिल हैं: using System.Globalization

string title = "war and peace";

TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;

title = textInfo.ToTitleCase(title); 
Console.WriteLine(title) ; //War And Peace

//When text is ALL UPPERCASE...
title = "WAR AND PEACE" ;

title = textInfo.ToTitleCase(title); 
Console.WriteLine(title) ; //WAR AND PEACE

//You need to call ToLower to make it work
title = textInfo.ToTitleCase(title.ToLower()); 
Console.WriteLine(title) ; //War And Peace

त्रुटियों को खत्म करने के लिए आप शून्य या खाली स्ट्रिंग मानों की जांच करने के बाद, इस सरल विधि का उपयोग करके उचित रूप से पाठ या स्ट्रिंग को उचित रूप से बदल सकते हैं:

  public string textToProper(string text)
    {
       string ProperText = string.Empty;
            if (!string.IsNullOrEmpty(text))
            {
                ProperText = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text);
            }
            else
            {
                ProperText = string.Empty;
            }
            return ProperText;
    }

फिर भी एक और बदलाव। यहां कई युक्तियों के आधार पर मैंने इसे इस विस्तार विधि में घटा दिया है, जो मेरे उद्देश्यों के लिए बहुत अच्छा काम करता है:

public static string ToTitleCase(this string s) {
    return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(s.ToLower());
}

मुझे सभी कैप्स शब्दों से निपटने का एक तरीका चाहिए, और मुझे रिकी एएच का समाधान पसंद आया, लेकिन मैंने इसे एक विस्तार विधि के रूप में लागू करने के लिए एक कदम आगे बढ़ाया। यह आपके सरणी की सरणी बनाने के चरण से बचाता है, फिर स्पष्ट रूप से हर समय ToArray को कॉल करें - ताकि आप इसे स्ट्रिंग पर कॉल कर सकें, जैसे:

उपयोग:

string newString = oldString.ToProper();

कोड:

public static class StringExtensions
{
    public static string ToProper(this string s)
    {
        return new string(s.CharsToTitleCase().ToArray());
    }

    public static IEnumerable<char> CharsToTitleCase(this string s)
    {
        bool newWord = true;
        foreach (char c in s)
        {
            if (newWord) { yield return Char.ToUpper(c); newWord = false; }
            else yield return Char.ToLower(c);
            if (c == ' ') newWord = true;
        }
    }

}

मैंने उपर्युक्त संदर्भों का उपयोग किया और पूरा समाधान है: -

Use Namespace System.Globalization;
string str="INFOA2Z means all information";

// परिणाम की आवश्यकता है "Infoa2z सभी जानकारी का मतलब है"
// हमें स्ट्रिंग को लोअरकेस में भी कनवर्ट करने की आवश्यकता है, अन्यथा यह ठीक से काम नहीं कर रहा है।

TextInfo ProperCase= new CultureInfo("en-US", false).TextInfo;

str= ProperCase.ToTitleCase(str.toLower());

http://www.infoa2z.com/asp.net/change-string-to-proper-case-in-an-asp.net-using-c#


यहां उस समस्या का समाधान है ...

CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
TextInfo textInfo = cultureInfo.TextInfo;
string txt = textInfo.ToTitleCase(txt);

यहां एक कार्यान्वयन, चरित्र द्वारा चरित्र है। "(एक दो तीन)" के साथ काम करना चाहिए

public static string ToInitcap(this string str)
{
    if (string.IsNullOrEmpty(str))
        return str;
    char[] charArray = new char[str.Length];
    bool newWord = true;
    for (int i = 0; i < str.Length; ++i)
    {
        Char currentChar = str[i];
        if (Char.IsLetter(currentChar))
        {
            if (newWord)
            {
                newWord = false;
                currentChar = Char.ToUpper(currentChar);
            }
            else
            {
                currentChar = Char.ToLower(currentChar);
            }
        }
        else if (Char.IsWhiteSpace(currentChar))
        {
            newWord = true;
        }
        charArray[i] = currentChar;
    }
    return new string(charArray);
}

सही इनपुट प्राप्त करने के परिणामस्वरूप CultureInfo.CurrentCulture.TextInfo.ToTitleCase से पहले ToLower() उपयोग करें।

    //---------------------------------------------------------------
    // Get title case of a string (every word with leading upper case,
    //                             the rest is lower case)
    //    i.e: ABCD EFG -> Abcd Efg,
    //         john doe -> John Doe,
    //         miXEd CaSING - > Mixed Casing
    //---------------------------------------------------------------
    public static string ToTitleCase(string str)
    {
        return CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str.ToLower());
    }

हाल ही में मुझे बेहतर समाधान मिला।

यदि आपके पाठ में अपरकेस में प्रत्येक अक्षर शामिल है तो टेक्स्टइन्फो इसे उचित केस में परिवर्तित नहीं करेगा, फिर, हम इसे लोअरकेस फ़ंक्शन का उपयोग करके ठीक कर सकते हैं ::

public static string ConvertTo_ProperCase(string text)
    {
        TextInfo myTI = new CultureInfo("en-US", false).TextInfo;
        return myTI.ToTitleCase(text.ToLower());
    }

और, अब यह सब कुछ बदल जाएगा प्रोपेरस में आता है।


    String TitleCaseString(String s)
    {
        if (s == null || s.Length == 0) return s;

        string[] splits = s.Split(' ');

        for (int i = 0; i < splits.Length; i++)
        {
            switch (splits[i].Length)
            {
                case 1:
                    break;

                default:
                    splits[i] = Char.ToUpper(splits[i][0]) + splits[i].Substring(1);
                    break;
            }
        }

        return String.Join(" ", splits);
    }

public static string PropCase(string strText)
{
    return new CultureInfo("en").TextInfo.ToTitleCase(strText.ToLower());
}




string