.NET에서 대/소문자 바꾸기
사용자 입력을 수락하는 애플리케이션을 작성하는 경우 데이터를 입력할 때 사용하는 대/소문자를 확신할 수 없습니다. 특히 사용자 인터페이스에 표시하는 경우 문자열의 대/소문자를 일관되게 표시하려는 경우가 많습니다. 다음 표에서는 세 가지 대/소문자 변경 메서드를 설명합니다. 처음 두 메서드는 문화권을 수락하는 오버로드를 제공합니다.
메서드 이름 | 기능 |
---|---|
String.ToUpper | 문자열의 모든 문자를 대문자로 변환합니다. |
String.ToLower | 문자열의 모든 문자를 소문자로 변환합니다. |
TextInfo.ToTitleCase | 문자열에서 단어의 첫 글자를 대문자로 변환합니다. |
Warning
문자열을 비교하거나 같은지 테스트하기 위해 String.ToUpper 및 String.ToLower 메서드를 사용하여 문자열을 변환하면 안 됩니다. 자세한 내용은 대/소문자가 혼합된 문자열 비교 섹션을 참조하세요.
대/소문자가 혼합된 문자열 비교
대/소문자가 혼합된 문자열을 비교하여 순서를 확인하려면 String.CompareTo 메서드의 오버로드 중 하나를 comparisonType
매개 변수와 함께 호출하고 comparisonType
인수에 대해 StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase 또는 StringComparison.OrdinalIgnoreCase 값을 제공합니다. 현재 문화권이 아닌 특정 문화권을 사용하여 비교하려면 String.CompareTo 메서드의 오버로드를 culture
및 options
매개 변수 둘 다와 함께 호출하고 options
인수로 CompareOptions.IgnoreCase 값을 제공합니다.
대/소문자가 혼합된 문자열을 비교하여 같은지 확인하려면 String.Equals 메서드의 오버로드 중 하나를 comparisonType
매개 변수와 함께 호출하고 comparisonType
인수에 대해 StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase 또는 StringComparison.OrdinalIgnoreCase 값을 제공합니다.
자세한 내용은 문자열 사용에 대한 모범 사례를 참조하세요.
ToUpper
메서드
String.ToUpper 메서드는 문자열의 모든 문자를 대문자로 변경합니다. 다음 예제에서는 대/소문자가 혼합된 "Hello World!" 문자열을 대문자로 변환합니다.
string properString = "Hello World!";
Console.WriteLine(properString.ToUpper());
// This example displays the following output:
// HELLO WORLD!
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.ToUpper())
' This example displays the following output:
' HELLO WORLD!
앞의 예제는 기본적으로 문화권을 구분합니다. 기본적으로 현재 문화권의 대/소문자 규칙을 적용합니다. 문화권을 구분하지 않는 대/소문자 변경을 수행하거나 특정 문화권의 대/소문자 규칙을 적용하려면 String.ToUpper(CultureInfo) 메서드 오버로드를 사용하고 지정된 문화권을 나타내는 CultureInfo.InvariantCulture 값 또는 System.Globalization.CultureInfo 개체를 culture
매개 변수에 제공합니다. ToUpper 메서드를 사용하여 문화권을 구분하지 않는 대/소문자 변경을 수행하는 방법을 보여주는 예제는 문화권을 구분하지 않는 대/소문자 변경 수행을 참조하세요.
ToLower
메서드
String.ToLower 메서드는 이전 메서드와 비슷하지만 대신 문자열의 모든 문자를 소문자로 변환합니다. 다음 예제에서는 "Hello World!" 문자열을 소문자로 변환합니다.
string properString = "Hello World!";
Console.WriteLine(properString.ToLower());
// This example displays the following output:
// hello world!
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.ToLower())
' This example displays the following output:
' hello world!
앞의 예제는 기본적으로 문화권을 구분합니다. 기본적으로 현재 문화권의 대/소문자 규칙을 적용합니다. 문화권을 구분하지 않는 대/소문자 변경을 수행하거나 특정 문화권의 대/소문자 규칙을 적용하려면 String.ToLower(CultureInfo) 메서드 오버로드를 사용하고 지정된 문화권을 나타내는 CultureInfo.InvariantCulture 값 또는 System.Globalization.CultureInfo 개체를 culture
매개 변수에 제공합니다. ToLower(CultureInfo) 메서드를 사용하여 문화권을 구분하지 않는 대/소문자 변경을 수행하는 방법을 보여주는 예제는 문화권을 구분하지 않는 대/소문자 변경 수행을 참조하세요.
ToTitleCase
메서드
TextInfo.ToTitleCase는 각 문자의 첫 문자를 대문자로 변환하고 나머지 문자를 소문자로 변환합니다. 그러나 전체적으로 대문자인 단어는 머리글자어로 간주되며 변환되지 않습니다.
TextInfo.ToTitleCase 메서드는 문화권을 구분합니다. 즉, 특정 문화권의 대/소문자 규칙을 사용합니다. 메서드를 호출하려면 먼저 특정 문화권의 CultureInfo.TextInfo 속성에서 특정 문화권의 대/소문자 규칙을 나타내는 TextInfo 개체를 검색합니다.
다음 예제에서는 배열의 각 문자열을 TextInfo.ToTitleCase 메서드에 전달합니다. 문자열에는 적절한 제목 문자열과 머리글자어가 포함됩니다. 영어(미국) 문화권의 대/소문자 규칙을 사용하여 문자열에서 단어의 첫 글자가 대문자로 변환됩니다.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] values = { "a tale of two cities", "gROWL to the rescue",
"inside the US government", "sports and MLB baseball",
"The Return of Sherlock Holmes", "UNICEF and children"};
TextInfo ti = CultureInfo.CurrentCulture.TextInfo;
foreach (var value in values)
Console.WriteLine("{0} --> {1}", value, ti.ToTitleCase(value));
}
}
// The example displays the following output:
// a tale of two cities --> A Tale Of Two Cities
// gROWL to the rescue --> Growl To The Rescue
// inside the US government --> Inside The US Government
// sports and MLB baseball --> Sports And MLB Baseball
// The Return of Sherlock Holmes --> The Return Of Sherlock Holmes
// UNICEF and children --> UNICEF And Children
Imports System.Globalization
Module Example
Public Sub Main()
Dim values() As String = {"a tale of two cities", "gROWL to the rescue",
"inside the US government", "sports and MLB baseball",
"The Return of Sherlock Holmes", "UNICEF and children"}
Dim ti As TextInfo = CultureInfo.CurrentCulture.TextInfo
For Each value In values
Console.WriteLine("{0} --> {1}", value, ti.ToTitleCase(value))
Next
End Sub
End Module
' The example displays the following output:
' a tale of two cities --> A Tale Of Two Cities
' gROWL to the rescue --> Growl To The Rescue
' inside the US government --> Inside The US Government
' sports and MLB baseball --> Sports And MLB Baseball
' The Return of Sherlock Holmes --> The Return Of Sherlock Holmes
' UNICEF and children --> UNICEF And Children
문화권을 구분하지만 TextInfo.ToTitleCase 메서드는 언어학적으로 올바른 대/소문자 규칙을 제공하지 않습니다. 예를 들어 앞의 예제에서 메서드는 "a tale of two cities"를 "A Tale Of Two Cities"로 변환합니다. 그러나 en-US 문화권에서 언어적으로 올바른 단어의 첫 글자를 대문자로 변환은 "A Tale of Two Cities"입니다.
참고 항목
.NET