Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > работа с регистром строки


Автор: Bezonik 23.4.2010, 14:31
Здравствуйте, подскажите кто сталкивался с такой задачей:
к примеру имеется строка "ПРИВЕТ ЭТО ВОПРОС", нужно сделать так, чтобы она выводилась первыми буквами каждого слова заглавными а остальные строчные, к примеру: "Привет Это Вопрос"

?

Автор: Уттара 23.4.2010, 15:03
Вот код:
Код

            string S = "ПРИВЕТ ЭТО ВОПРОС";
            string[] Spl = S.Split(' ');
            StringBuilder StrB = new StringBuilder();
            string Res = "";
            for (int i = 0; i < Spl.Length; i++)
            {
                StrB.Append(Spl[i][0] + Spl[i].Substring(1, Spl[i].Length - 1).ToLower() + ' ');
            }
            Res = StrB.ToString();
            MessageBox.Show(Res);

Автор: Heinzz 23.4.2010, 17:27
мне кажется что с регексами быстрее
Код

       static void Main(string[] args)
        {
            string str = "ПРИВЕТ ЭТО ВОПРОС";
            Console.WriteLine(UpperFirst(str));
        }

        public static string UpperFirst(string s)
        {
            return Regex.Replace(s.ToLower(), @"\b\w", delegate(Match match)
            {
                string v = match.ToString();
                return char.ToUpper(v[0]) + v.Substring(1);
            });
        }

Автор: diadiavova 23.4.2010, 17:53
Цитата(Heinzz @  23.4.2010,  18:27 Найти цитируемый пост)
мне кажется что с регексами быстрее

Ну если с регекспами, то тогда уж так
Код

textBox1.Text = Regex.Replace(textBox1.Text, @"\B\w", (x) => x.Value.ToLower());
 smile 

Автор: Heinzz 24.4.2010, 06:08
Код

Console.WriteLine(Regex.Replace(str.ToLower(),@"\b\w",x=>x.Value.ToUpper()));

но идея хороша smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)