C#에서는 ToCharArray() 메서드와 간단한 문자 연산을 활용해 문장에 포함된 각 단어의 첫 글자만 대문자로 바꾸고, 나머지 글자는 소문자로 정리할 수 있습니다. 이번 글에서는 그 구현 과정을 단계별로 살펴보겠습니다.
1단계: 변환할 문자열 준비하기
먼저 다음과 같은 문자열이 있다고 가정해 보겠습니다.
String str = "Welcome to our website!";
2단계: 문자열을 char 배열로 변환하기
ToCharArray() 메서드를 사용하면 문자열을 문자(char) 배열로 손쉽게 변환할 수 있습니다. 배열 형태로 만들어야 각 문자에 개별적으로 접근하여 값을 수정할 수 있습니다.
char []ch = str.ToCharArray();
3단계: 첫 글자를 대문자로 변환하기
소문자 범위('a'~'z')에 속하는 문자라면 'a'와 'A'의 아스키 코드 차이를 이용해 대문자로 바꿀 수 있습니다.
if (ch[i] >= 'a' && ch[i] <= 'z') {
// 대문자로 변환
ch[i] = (char)(ch[i] - 'a' + 'A');
}전체 예제 코드
아래 전체 코드를 실행하면 문장의 각 단어 첫 글자만 대문자로, 나머지는 소문자로 변환된 결과를 확인할 수 있습니다.
using System;
class Demo {
static String MyApplication(String str) {
char []val = str.ToCharArray();
for (int i = 0; i < str.Length; i++) {
if (i == 0 && val[i] != ' ' ||
val[i] != ' ' && val[i - 1] == ' ') {
if (val[i] >= 'a' && val[i] <= 'z') {
val[i] = (char)(val[i] - 'a' + 'A');
}
} else if (val[i] >= 'A' && val[i] <= 'Z')
val[i] = (char)(val[i] + 'a' - 'A');
}
String s = new String(val);
return s;
}
public static void Main() {
String str = "Welcome to our website!";
Console.Write(MyApplication(str));
}
}
코드 동작 원리
- 현재 문자가 문장의 맨 앞이거나 바로 앞 문자가 공백이라면, 그 문자는 단어의 첫 글자입니다.
- 첫 글자가 소문자라면 대문자로 변환합니다.
- 그 외 위치에 있는 대문자는 모두 소문자로 변환합니다.
- 마지막에는 수정된 char 배열을
new String()으로 다시 문자열로 만들어 반환합니다.
실행 결과
Welcome To Our Website!