Java 에서 문자열이 대문자인지 확인하는 방법

JavaBeginner
지금 연습하기

소개

이 랩에서는 Java 에서 문자열이 대문자인지 확인하는 방법을 배우게 됩니다. toUpperCase()를 사용하여 원래 문자열과 대문자 버전의 문자열을 비교하는 것부터 시작하여, 이를 달성하기 위한 다양한 방법을 살펴볼 것입니다.

그 다음, 문자열을 반복하고 Character.isUpperCase() 메서드를 사용하여 개별 문자의 대소문자를 확인하는 방법을 배우게 됩니다. 마지막으로, 이러한 검사를 수행할 때 문자열 내의 비 문자 문자를 처리하는 방법을 다룰 것입니다.

toUpperCase() 로 문자열 비교

이 단계에서는 Java 에서 문자열을 비교하는 방법을 배우고, 특히 대소문자를 구분하지 않는 비교를 수행하는 방법에 중점을 둡니다. 이는 프로그래밍에서 흔히 사용되는 작업으로, 예를 들어 사용자가 "yes", "Yes" 또는 "YES"를 입력했는지 확인할 때 사용됩니다.

먼저, ~/project 디렉토리에 StringCompare.java라는 새 Java 파일을 생성해 보겠습니다. 왼쪽의 파일 탐색기에서 마우스 오른쪽 버튼을 클릭하고 "새 파일"을 선택한 다음 StringCompare.java를 입력하여 이 작업을 수행할 수 있습니다.

이제 편집기에서 StringCompare.java 파일을 열고 다음 코드를 추가합니다.

public class StringCompare {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "hello";

        // Case-sensitive comparison
        boolean areEqualCaseSensitive = str1.equals(str2);
        System.out.println("Case-sensitive comparison: " + areEqualCaseSensitive);

        // Case-insensitive comparison using toUpperCase()
        boolean areEqualCaseInsensitive = str1.toUpperCase().equals(str2.toUpperCase());
        System.out.println("Case-insensitive comparison using toUpperCase(): " + areEqualCaseInsensitive);
    }
}

이 코드를 자세히 살펴보겠습니다.

  • 서로 다른 대소문자를 가진 두 개의 String 변수 str1str2를 선언합니다.
  • str1.equals(str2)는 대소문자를 구분하는 비교를 수행합니다. 문자 대소문자를 포함하여 문자열이 정확히 동일한 경우에만 true를 반환합니다.
  • str1.toUpperCase()str1을 모두 대문자 ("HELLO") 로 변환합니다.
  • str2.toUpperCase()str2를 모두 대문자 ("HELLO") 로 변환합니다.
  • 그런 다음 .equals()를 사용하여 문자열의 대문자 버전을 비교하여 효과적으로 대소문자를 구분하지 않는 비교를 수행합니다.

Ctrl + S(Mac 에서는 Cmd + S) 를 눌러 파일을 저장합니다.

이제 터미널에서 이 프로그램을 컴파일하고 실행해 보겠습니다. ~/project 디렉토리에 있는지 확인하십시오.

코드를 컴파일합니다.

javac StringCompare.java

오류가 없으면 StringCompare.class 파일이 생성됩니다.

이제 컴파일된 코드를 실행합니다.

java StringCompare

다음 출력을 볼 수 있습니다.

Case-sensitive comparison: false
Case-insensitive comparison using toUpperCase(): true

이 출력은 대소문자를 구분하는 비교 (equals()) 가 "Hello"와 "hello"가 대소문자로 인해 다르기 때문에 false를 반환하는 반면, toUpperCase()를 사용한 대소문자를 구분하지 않는 비교는 두 문자열이 대문자로 변환될 때 "HELLO"가 되기 때문에 true를 반환함을 보여줍니다.

Java 에서 문자열을 비교하기 전에 toUpperCase()(또는 toLowerCase()) 를 사용하는 것은 대소문자를 구분하지 않는 비교를 수행하는 일반적인 방법입니다.

루프에서 Character.isUpperCase() 사용

이전 단계에서는 전체 문자열을 대소문자를 구분하지 않고 비교하는 방법을 배웠습니다. 이제 문자열 내의 개별 문자를 검사하고 대문자인지 확인하는 방법을 살펴보겠습니다. 이는 대문자 수를 세거나 입력 형식을 검증하는 등 문자열의 구조를 분석해야 할 때 유용합니다.

Java 는 개별 문자를 처리하는 데 유용한 메서드를 가진 Character 클래스를 제공합니다. 이러한 메서드 중 하나는 주어진 문자가 대문자인지 확인하는 isUpperCase()입니다.

이를 보여주기 위해 StringCompare.java 파일을 수정해 보겠습니다. 편집기에서 ~/project/StringCompare.java를 열고 내용을 다음 코드로 바꿉니다.

public class StringCompare {
    public static void main(String[] args) {
        String text = "Hello World";
        int uppercaseCount = 0;

        System.out.println("Analyzing the string: \"" + text + "\"");

        // Loop through each character in the string
        for (int i = 0; i < text.length(); i++) {
            char character = text.charAt(i); // Get the character at the current index

            // Check if the character is uppercase
            if (Character.isUpperCase(character)) {
                System.out.println("Found an uppercase character: " + character + " at index " + i);
                uppercaseCount++; // Increment the counter
            }
        }

        System.out.println("Total uppercase characters found: " + uppercaseCount);
    }
}

이 코드의 새로운 부분을 이해해 보겠습니다.

  • String 변수 text와 0 으로 초기화된 정수 변수 uppercaseCount를 선언합니다.
  • for 루프를 사용하여 text 문자열의 각 문자를 반복합니다. 루프는 인덱스 0 부터 문자열 길이 (포함하지 않음) 까지 실행됩니다.
  • text.charAt(i)는 문자열의 현재 인덱스 i에 있는 문자를 가져옵니다.
  • Character.isUpperCase(character)는 문자가 대문자인지 확인합니다. 이 메서드는 문자가 대문자인 경우 true를 반환하고 그렇지 않으면 false를 반환합니다.
  • isUpperCase()true를 반환하면 대문자 및 해당 인덱스를 나타내는 메시지를 출력하고 uppercaseCount를 증가시킵니다.

파일을 저장합니다 (Ctrl + S).

이제 ~/project 디렉토리에서 터미널에서 수정된 프로그램을 컴파일하고 실행합니다.

컴파일:

javac StringCompare.java

실행:

java StringCompare

다음과 유사한 출력을 볼 수 있습니다.

Analyzing the string: "Hello World"
Found an uppercase character: H at index 0
Found an uppercase character: W at index 6
Total uppercase characters found: 2

이 출력은 프로그램이 문자열에서 대문자 'H'와 'W'를 올바르게 식별하고 계산했음을 보여줍니다.

루프 내에서 Character.isUpperCase()를 사용하는 것은 문자열을 문자별로 분석하는 강력한 기술입니다. 다음 단계에서는 문자가 문자가 아닌 경우를 처리하는 방법을 고려해 보겠습니다.

문자가 아닌 문자 처리

이전 단계에서는 Character.isUpperCase()를 사용하여 대문자를 식별했습니다. 그러나 문자열에는 문자뿐만 아니라 숫자, 기호, 공백 및 구두점도 포함될 수 있습니다. 문자열을 분석할 때는 다양한 유형의 문자를 구별해야 하는 경우가 많습니다.

Character 클래스는 다음과 같은 목적으로 유용한 다른 메서드를 제공합니다.

  • Character.isLetter(char ch): 문자가 문자인지 확인합니다.
  • Character.isDigit(char ch): 문자가 숫자 (0-9) 인지 확인합니다.
  • Character.isWhitespace(char ch): 문자가 공백 문자 (예: 공백, 탭, 줄 바꿈) 인지 확인합니다.

StringCompare.java 파일을 다시 수정하여 문자 이외의 문자를 처리하고 문자열에서 다양한 유형의 문자를 계산하는 방법을 보여드리겠습니다. 편집기에서 ~/project/StringCompare.java를 열고 내용을 다음 코드로 바꿉니다.

public class StringCompare {
    public static void main(String[] args) {
        String text = "Hello World 123!";
        int letterCount = 0;
        int digitCount = 0;
        int whitespaceCount = 0;
        int otherCount = 0;

        System.out.println("Analyzing the string: \"" + text + "\"");

        // Loop through each character in the string
        for (int i = 0; i < text.length(); i++) {
            char character = text.charAt(i); // Get the character at the current index

            // Check the type of the character
            if (Character.isLetter(character)) {
                letterCount++;
            } else if (Character.isDigit(character)) {
                digitCount++;
            } else if (Character.isWhitespace(character)) {
                whitespaceCount++;
            } else {
                otherCount++; // Characters that are not letters, digits, or whitespace
            }
        }

        System.out.println("Total characters: " + text.length());
        System.out.println("Letter count: " + letterCount);
        System.out.println("Digit count: " + digitCount);
        System.out.println("Whitespace count: " + whitespaceCount);
        System.out.println("Other character count: " + otherCount);
    }
}

이 업데이트된 코드에서:

  • 문자, 숫자, 공백 및 기타 문자에 대한 카운터를 초기화합니다.
  • 루프 내에서 if-else if-else 문을 사용하여 Character.isLetter(), Character.isDigit()Character.isWhitespace()를 사용하여 각 문자의 유형을 확인합니다.
  • 문자 유형에 따라 해당 카운터를 증가시킵니다.
  • 마지막으로 각 유형의 문자에 대한 카운트를 출력합니다.

파일을 저장합니다 (Ctrl + S).

이제 ~/project 디렉토리에서 터미널에서 프로그램을 컴파일하고 실행합니다.

컴파일:

javac StringCompare.java

실행:

java StringCompare

다음과 유사한 출력을 볼 수 있습니다.

Analyzing the string: "Hello World 123!"
Total characters: 16
Letter count: 10
Digit count: 3
Whitespace count: 2
Other character count: 1

이 출력은 문자열 "Hello World 123!"에서 다양한 유형의 문자를 올바르게 식별하고 계산합니다. 문자는 'H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd'(총 10 개) 입니다. 숫자는 '1', '2', '3'(총 3 개) 입니다. 공백 문자는 "Hello"와 "World" 사이의 공백과 "World"와 "123" 사이의 공백 (총 2 개) 입니다. 다른 문자는 '!' (총 1 개) 입니다. 총 개수는 10 + 3 + 2 + 1 = 16 으로 문자열의 길이와 일치합니다.

Character.isLetter(), Character.isDigit()Character.isWhitespace()와 같은 메서드를 사용하면 문자열 내의 다양한 유형의 문자를 처리할 수 있는 보다 강력한 코드를 작성할 수 있습니다. 이는 데이터 유효성 검사, 입력 구문 분석 또는 텍스트 분석과 같은 작업에 매우 중요합니다.

요약

이 Lab 에서는 Java 에서 문자열이 대문자인지 확인하는 방법을 배웠습니다. 두 가지 주요 방법을 살펴보았습니다. 먼저, toUpperCase() 메서드와 equals() 메서드를 사용하여 문자열을 대문자 버전과 비교하여 대소문자를 구분하지 않는 비교를 수행했습니다. 이 방법은 두 문자열이 대소문자와 관계없이 동일한지 확인하는 데 유용합니다.

둘째, 문자열을 반복하고 루프 내에서 Character.isUpperCase() 메서드를 사용하여 각 문자가 대문자인지 확인하는 방법을 배웠습니다. 또한 이 과정에서 문자 이외의 문자를 처리하는 방법도 고려하여 검사가 견고하도록 했습니다. 이러한 기술은 작업의 특정 요구 사항에 따라 문자열의 대문자 상태를 결정하기 위한 다양한 접근 방식을 제공합니다.