제목 대소문자(Title Case)란 제목이나 헤딩처럼 주요 단어의 첫 글자를 대문자로 표기하는 텍스트 형식을 말합니다. 영어권에서 출판물이나 예술 작품의 제목을 표기할 때 사용되는 대소문자 스타일로, 헤드라인 케이스(Headline Case)라고도 부릅니다.
제목 대소문자 규칙에 따르면 기본적으로 모든 단어를 대문자로 시작하지만, 전치사·접속사 등 '사소한(minor)' 단어는 제목의 첫 번째 또는 마지막 단어가 아닌 한 소문자로 유지하는 것이 일반적입니다.
C#에서는 CultureInfo 클래스의 TextInfo 속성이 제공하는 ToTitleCase() 메서드를 사용하면 문자열을 간단하게 제목 대소문자로 변환할 수 있습니다. 아래 예제의 구현 결과는 항상 입력 문자열과 동일한 길이의 출력 문자열을 반환합니다.
예제 1
특정 문화권(en-US)의 TextInfo 객체를 생성하여 문자열을 변환하는 기본적인 방법입니다.
class Program{
static void Main(string[] args){
string myString = "wAr aNd pEaCe";
TextInfo myTI = new CultureInfo("en-US", false).TextInfo;
Console.WriteLine("\"{0}\" to titlecase: {1}", myString, myTI.ToTitleCase(myString));
Console.ReadLine();
}
}출력 결과
"war and peace" to titlecase: War And Peace
대소문자가 뒤섞여 있던 "wAr aNd pEaCe" 문자열이 깔끔하게 "War And Peace"로 변환된 것을 확인할 수 있습니다.
예제 2
이번에는 현재 시스템 문화권(CultureInfo.CurrentCulture)의 TextInfo를 사용해 여러 문자열을 배열로 처리하는 예제입니다.
class Program{
static void Main(string[] args){
string[] values = {
"a tale of three cities", "gROWL rescue",
"inside the office", "sports and tennis",
"The Return of Christmas Holmes"
};
TextInfo ti = CultureInfo.CurrentCulture.TextInfo;
foreach (var value in values)
Console.WriteLine("{0} −−> {1}", value, ti.ToTitleCase(value));
Console.ReadLine();
}
}출력 결과
a tale of three cities −−> A Tale Of Three Cities gROWL rescue −−> Growl Rescue inside the office −−> Inside The Office sports and tennis −−> Sports And Tennis The Return of Christmas Holmes −−> The Return Of Christmas Holmes
실행 결과를 보면 대소문자가 불규칙했던 입력값들도 모두 일관된 제목 대소문자 형식으로 변환됩니다. 참고로 ToTitleCase()는 완전히 대문자로 된 단어(약어 등)는 그대로 두는 특성이 있으므로, 필요하다면 변환 전에 문자열을 소문자로 정규화하는 것이 좋습니다.