Как изменить регистр букв первой буквы и остальных букв, как вы хотите? - PullRequest
0 голосов
/ 07 ноября 2018

Я столкнулся с проблемой размещения текста так, как мне хочется, и я решил ее, как видно из ответа на этот вопрос.

Проблема заключалась в том, что я не мог прописать первую букву слова в заглавии, сохраняя все остальные буквы в любом регистре, используя встроенные функции.

Я закончил тем, что создал свою собственную функцию для вопроса, который описан в разделе ответов.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вы можете использовать метод TextInfo ToTitleCase():

static void Main()
{
    TextInfo info = CultureInfo.CurrentCulture.TextInfo;
    string input = "some lowercase text";
    Console.WriteLine(info.ToTitleCase(input)); // Outputs 'Some lowercase text'
    Console.ReadKey(true);
}
0 голосов
/ 07 ноября 2018

Я сделал функцию для обработки любого типа текста, который кто-либо пожелает.

public class ChangeTextCaseType
{
    public class GetChangeTextCaseType
    {
        public int// 0 - remain as it is, 1 - lower cased, 2 - upper cased, 3 - inverted case
            WordsFirstLetterCase
            , WordsRestLettersCase;

        public string SourceText;
    }

    public static string ChangeTextCase(GetChangeTextCaseType GetChangeTextCase)
    {
        GetChangeTextCaseType FunctionGet = GetChangeTextCase;
        string FunctionResult = "";

        if (FunctionGet.SourceText.Length > 0)
        {
            bool StartOfAWord = true;

            if (FunctionGet.SourceText[0] >= 'a' && FunctionGet.SourceText[0] <= 'z')
            {
                StartOfAWord = false;

                if (FunctionGet.WordsFirstLetterCase == 2 || FunctionGet.WordsFirstLetterCase == 3)
                    FunctionResult += (char)(FunctionGet.SourceText[0] - 32);
                else
                    FunctionResult += FunctionGet.SourceText[0];
            }
            else
            {
                if (FunctionGet.SourceText[0] >= 'A' && FunctionGet.SourceText[0] <= 'Z')
                {
                    StartOfAWord = false;

                    if (FunctionGet.WordsFirstLetterCase == 1 || FunctionGet.WordsFirstLetterCase == 3)
                        FunctionResult += (char)(FunctionGet.SourceText[0] + 32);
                    else
                        FunctionResult += FunctionGet.SourceText[0];
                }
                else
                    FunctionResult += FunctionGet.SourceText[0];
            }

            for (int SourceTextIndex = 1; SourceTextIndex < FunctionGet.SourceText.Length; SourceTextIndex++)
                if (FunctionGet.SourceText[SourceTextIndex] >= 'a' && FunctionGet.SourceText[SourceTextIndex] <= 'z')
                    if (StartOfAWord == true)
                    {
                        StartOfAWord = false;

                        if (FunctionGet.WordsFirstLetterCase == 2 || FunctionGet.WordsFirstLetterCase == 3)
                            FunctionResult += (char)(FunctionGet.SourceText[SourceTextIndex] - 32);
                        else
                            FunctionResult += FunctionGet.SourceText[SourceTextIndex];
                    }
                    else
                    {
                        if (FunctionGet.WordsRestLettersCase == 2 || FunctionGet.WordsRestLettersCase == 3)
                            FunctionResult += (char)(FunctionGet.SourceText[SourceTextIndex] - 32);
                        else
                            FunctionResult += FunctionGet.SourceText[SourceTextIndex];
                    }
                else
                {
                    if (FunctionGet.SourceText[SourceTextIndex] >= 'A' && FunctionGet.SourceText[SourceTextIndex] <= 'Z')
                        if (StartOfAWord == true)
                        {
                            StartOfAWord = false;

                            if (FunctionGet.WordsFirstLetterCase == 1 || FunctionGet.WordsFirstLetterCase == 3)
                                FunctionResult += (char)(FunctionGet.SourceText[SourceTextIndex] + 32);
                            else
                                FunctionResult += FunctionGet.SourceText[SourceTextIndex];
                        }
                        else
                        {
                            if (FunctionGet.WordsRestLettersCase == 1 || FunctionGet.WordsRestLettersCase == 3)
                                FunctionResult += (char)(FunctionGet.SourceText[SourceTextIndex] + 32);
                            else
                                FunctionResult += FunctionGet.SourceText[SourceTextIndex];
                        }
                    else
                    {
                        if (StartOfAWord == false)
                            StartOfAWord = true;

                        FunctionResult += FunctionGet.SourceText[SourceTextIndex];
                    }
                }
        }

        return FunctionResult;
    }
}

использование:

string abc = "ABCd efG5-!rt %2r$b# RB";
abc = TextTools.ChangeTextCaseType.ChangeTextCase(new TextTools.ChangeTextCaseType.GetChangeTextCaseType() { SourceText = abc, WordsFirstLetterCase = 2, WordsRestLettersCase = 1 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...