이 글에서는 Java에서 문자열의 각 단어 첫 글자를 대문자로 변환하는 방법을 살펴봅니다. 문자열(String)은 하나 이상의 문자로 구성되며 큰따옴표(" ")로 감싸 표현하는 데이터 타입입니다.
먼저 입력값과 기대 출력값을 통해 프로그램의 동작 방식을 확인해 보겠습니다.
입력값
Input string: java program
기대 출력값
The string after capitalizing the first letter is: Java program
알고리즘
Step 1 - 시작 Step 2 - input_string, first_letter, remaining_letters 세 개의 문자열 변수를 선언합니다. Step 3 - 변수 값을 정의합니다. Step 4 - substring()으로 첫 글자를 추출한 뒤 toUpperCase()로 대문자로 변환하고, 나머지 문자열과 연결(concat)합니다. Step 5 - 결과를 출력합니다. Step 6 - 종료
예제 1 – main 메서드에서 처리하기
이 예제에서는 모든 연산을 main 메서드 안에서 한 번에 수행합니다. 로직이 간단할 때 빠르게 결과를 확인할 수 있는 방식입니다.
public class Capitalize {
public static void main(String[] args) {
String input_string = "java program";
System.out.println("The string is defined as: " + input_string);
String first_letter = input_string.substring(0, 1);
String remaining_letters = input_string.substring(1, input_string.length());
first_letter = first_letter.toUpperCase();
input_string = first_letter + remaining_letters;
System.out.println("The string after capitalizing the first letter is: " + input_string);
}
}
출력 결과
The string is defined as: java program The string after capitalizing the first letter is: Java program
예제 2 – 객체 지향 방식으로 구현하기
이번에는 대소문자 변환 로직을 별도의 메서드로 분리하여 객체 지향 프로그래밍 스타일로 작성했습니다. 이렇게 하면 코드 재사용성이 높아지고 가독성도 크게 개선됩니다.
public class Capitalize {
public static String capitalize_letter(String input_string){
String first_letter = input_string.substring(0, 1);
String remaining_letters = input_string.substring(1, input_string.length());
first_letter = first_letter.toUpperCase();
input_string = first_letter + remaining_letters;
return input_string;
}
public static void main(String[] args) {
String input_string = "java program";
System.out.println("The string is defined as: " + input_string);
String result = capitalize_letter(input_string);
System.out.println("The string after capitalizing the first letter is: " + result);
}
}
출력 결과
The string is defined as: java program The string after capitalizing the first letter is: Java program
응용 – 여러 단어의 첫 글자를 모두 대문자로 변환하기
앞선 예제는 문자열 전체에서 맨 앞 글자 하나만 변환했습니다. "java program tutorial"처럼 여러 단어가 포함된 문장이라면 split() 메서드로 공백을 기준으로 문자열을 나눈 뒤, 각 단어에 동일한 로직을 반복 적용하면 됩니다.
public class CapitalizeEachWord {
public static void main(String[] args) {
String input_string = "java program tutorial";
System.out.println("The string is defined as: " + input_string);
String[] words = input_string.split(" ");
StringBuilder sb = new StringBuilder();
for (String word : words) {
if (!word.isEmpty()) {
sb.append(Character.toUpperCase(word.charAt(0)))
.append(word.substring(1))
.append(" ");
}
}
System.out.println("Result: " + sb.toString().trim());
}
}
출력 결과
The string is defined as: java program tutorial Result: Java Program Tutorial
마무리
지금까지 Java에서 문자열의 첫 글자를 대문자로 변환하는 두 가지 방식을 살펴보았습니다. substring()과 toUpperCase()만으로도 간단히 구현할 수 있으며, split()과 반복문을 조합하면 문장 전체의 각 단어에도 적용할 수 있습니다. 이러한 기법은 게시글 제목 포맷팅, 사용자 입력 데이터 정규화 등 실무에서 다양하게 활용되니 상황에 맞는 방식을 선택해 적용해 보시기 바랍니다.