C#의 ToUpper() 메서드는 문자열의 모든 문자를 대문자로 변환한 새로운 복사본을 반환합니다. 중요한 점은 원본 문자열은 그대로 유지되며, 변환된 결과가 담긴 새 문자열 객체가 생성된다는 것입니다.
구문(Syntax)
public string ToUpper ();
매개변수 없이 호출하면 현재 스레드의 문화권(CurrentCulture) 규칙에 따라 대소문자 변환이 수행됩니다.
예제 1 – 기본 사용법
using System;
public class Demo {
public static void Main(String[] args) {
string str1 = "Welcome!";
string str2 = "Thisisit!";
char[] arr1 = str1.ToCharArray(3,2);
char[] arr2 = str2.ToCharArray(2,2);
Console.WriteLine("String1 = "+str1);
Console.WriteLine("String1 ToUpper = "+str1.ToUpper());
Console.WriteLine("String1 Substring from index4 = " + str1.Substring(4, 4));
Console.Write("Character array...String1 =");
for (int i = 0; i < arr1.Length; i++)
Console.Write(" " + arr1[i]);
Console.WriteLine("
String2 = "+str2);
Console.WriteLine("String2 ToUpper = "+str2.ToUpper());
Console.WriteLine("String2 Substring from index2 = " + str2.Substring(0, 5));
Console.Write("Character array...String2 =");
for (int i = 0; i < arr2.Length; i++)
Console.Write(" " + arr2[i]);
}
}실행 결과
String1 = Welcome! String1 ToUpper = WELCOME! String1 Substring from index4 = ome! Character array...String1 = c o String2 = Thisisit! String2 ToUpper = THISISIT! String2 Substring from index2 = Thisi Character array...String2 = i s
위 결과에서 확인할 수 있듯이, str1.ToUpper()와 str2.ToUpper()를 호출하자 각각 "WELCOME!"과 "THISISIT!"처럼 모든 알파벳이 대문자로 변환되었습니다. 반면 숫자나 특수문자(!, @, # 등)는 대소문자 구분이 없으므로 그대로 유지됩니다.
예제 2 – CultureInfo를 지정한 ToUpper()
ToUpper() 메서드는 CultureInfo 객체를 매개변수로 받는 오버로드도 제공합니다. 이를 활용하면 특정 문화권의 대소문자 변환 규칙을 명시적으로 적용할 수 있어, 다국어 환경에서 예측 가능한 동작을 보장하는 데 유용합니다.
using System;
using System.Globalization;
public class Demo {
public static void Main(String[] args) {
string str1 = "JackSparrow!";
string str2 = "@#$PQRSTUV!";
Console.WriteLine("String1 = "+str1);
Console.WriteLine("String1 ToUpper = "+str1.ToUpper(new CultureInfo("en-US", false)));
Console.WriteLine("String1 Substring from index4 = " + str1.Substring(2, 2));
Console.WriteLine("
String2 = "+str2);
Console.WriteLine("String2 ToUpper = "+str2.ToUpper(new CultureInfo("en-US", false)));
Console.WriteLine("String2 Substring from index2 = " + str2.Substring(0, 5));
}
}실행 결과
String1 = JackSparrow! String1 ToUpper = JACKSPARROW! String1 Substring from index4 = ck String2 = @#$PQRSTUV! String2 ToUpper = @#$PQRSTUV! String2 Substring from index2 = @#$PQ
주요 포인트 정리
- 불변성(Immutability): ToUpper()는 원본 문자열을 수정하지 않고 항상 새 문자열을 반환합니다.
- 기본 동작: 매개변수 없이 호출하면 현재 문화권(CurrentCulture)의 규칙이 적용됩니다.
- 문화권 지정:
ToUpper(CultureInfo)오버로드를 사용하면 en-US처럼 특정 문화권의 규칙을 명시적으로 지정할 수 있습니다. - 특수문자 처리: 알파벳이 아닌 문자(숫자, 기호 등)는 변환 없이 그대로 반환됩니다.