Сайт для программистов

воскресенье, 26 апреля 2009 г.

ToTitleCase

В .NET Framework есть такой интересный метод как ToTitleCase, когда в заданной строке все первые буквы слов становятся большими, а остальные - маленькими. В MSDN можно найти описание и пример использования этого метода. Прочитав, вы узнаете, что у метода есть одна особенность: если все буквы в слове большие, то с этим словом ничего не происходит. Например, это удобно, когда встречаются такие слова как СССР, МГУ, ЗАГС и т.п. Но тем не менее, иногда, хочется обойти это ограничение. Что для этого нужно сделать. Правильно, сначала перевести все слова в нижний регистр, а затем вызвать метод ToTitleCase.


Именно так поступил программист Jan Schreuder, написав функции-обертки для этого метода (блог http://bloggingabout.net/)



private string ToTitleCase(string text, System.Globalization.CultureInfo culture, bool forceCasing)
{
if (forceCasing)
{
return culture.TextInfo.ToTitleCase(text.ToLower());
}
return culture.TextInfo.ToTitleCase(text);
}

private string ToTitleCase(string text)
{
return ToTitleCase(text, System.Threading.Thread.CurrentThread.CurrentCulture, false);
}

private string ToTitleCase(string text, bool forceCasing)
{
return ToTitleCase(text, System.Threading.Thread.CurrentThread.CurrentCulture, forceCasing);
}

private string ToTitleCase(string text, System.Globalization.CultureInfo culture)
{
return ToTitleCase(text, culture, false);
}

//Вызываем какую-нибудь функцию
label1.Text = ToTitleCase(textBox1.Text, true);


Как видите, в нашем распоряжении четыре перегруженных версий функции. В стандартном случае достаточно вызвать функцию с одним параметром, которая содержит нужную строку. Для других случаев вызываются перегруженные версии.


Вот как будут выглядеть строки после вызова всех вариантов функций.



change this to title case => Change This To Title Case
chanGe This to TITLE case => Change This To TITLE Case
ChanGe This to TITLE case => Change This To TITLE Case
ChanGe This to TITLE case => Change This To Title Case

Возможно, пример покажется не самым полезным в вашей практике, ну, а вдруг пригодится.

Комментариев нет: