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

JavaBeginner
지금 연습하기

소개

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

그런 다음 문자열을 반복하고 Character.isLowerCase()를 사용하여 각 문자를 개별적으로 확인하는 방법을 배우게 됩니다. 마지막으로, 이 검사를 수행할 때 문자 문자가 아닌 문자를 처리하는 방법을 다룰 것입니다.

toLowerCase() 를 사용한 문자열 비교

이 단계에서는 문자의 대소문자를 무시하고 Java 에서 문자열을 비교하는 방법을 배우게 됩니다. 이는 대문자 또는 소문자를 사용하는지에 관계없이 두 문자열이 동일한지 확인하려는 경우 흔히 사용되는 작업입니다.

이를 연습하기 위해 새로운 Java 파일을 만들어 보겠습니다.

  1. WebIDE 가 아직 열려 있지 않다면 엽니다.

  2. 왼쪽의 파일 탐색기에서 ~/project 디렉토리에 있는지 확인합니다.

  3. 파일 탐색기의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 "새 파일"을 선택한 다음 이름을 CaseInsensitiveCompare.java로 지정합니다.

  4. 편집기에서 CaseInsensitiveCompare.java 파일을 엽니다.

  5. 다음 코드를 복사하여 편집기에 붙여넣습니다.

    public class CaseInsensitiveCompare {
        public static void main(String[] args) {
            String str1 = "Hello";
            String str2 = "hello";
            String str3 = "World";
    
            // Comparing strings directly (case-sensitive)
            boolean areEqualCaseSensitive = str1.equals(str2);
            System.out.println("Case-sensitive comparison of \"" + str1 + "\" and \"" + str2 + "\": " + areEqualCaseSensitive);
    
            // Comparing strings ignoring case
            boolean areEqualCaseInsensitive = str1.equalsIgnoreCase(str2);
            System.out.println("Case-insensitive comparison of \"" + str1 + "\" and \"" + str2 + "\": " + areEqualCaseInsensitive);
    
            // Comparing str1 and str3 ignoring case
            boolean areEqualStr1Str3 = str1.equalsIgnoreCase(str3);
            System.out.println("Case-insensitive comparison of \"" + str1 + "\" and \"" + str3 + "\": " + areEqualStr1Str3);
        }
    }

    이 코드에서:

    • 세 개의 String 변수 str1, str2, str3를 선언합니다.
    • str1.equals(str2)는 대소문자를 구분하는 비교를 수행합니다. "Hello"와 "hello"는 대문자 'H' 때문에 다르므로 false를 반환합니다.
    • str1.equalsIgnoreCase(str2)는 대소문자를 구분하지 않는 비교를 수행합니다. 대소문자를 무시하면 "Hello"와 "hello"가 같으므로 true를 반환합니다.
    • 또한 다른 단어가 여전히 다른 것으로 간주됨을 보여주기 위해 str1str3을 대소문자를 무시하고 비교합니다.
  6. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  7. WebIDE 하단에서 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

  8. javac 명령을 사용하여 Java 프로그램을 컴파일합니다.

    javac CaseInsensitiveCompare.java

    오류가 없으면 출력이 표시되지 않습니다. ~/project 디렉토리에 CaseInsensitiveCompare.class 파일이 생성됩니다.

  9. java 명령을 사용하여 컴파일된 Java 프로그램을 실행합니다.

    java CaseInsensitiveCompare

    다음 출력이 표시됩니다.

    Case-sensitive comparison of "Hello" and "hello": false
    Case-insensitive comparison of "Hello" and "hello": true
    Case-insensitive comparison of "Hello" and "World": false

    이 출력은 equals()가 대소문자를 구분하고 equalsIgnoreCase()가 대소문자를 무시함을 확인합니다.

equalsIgnoreCase()를 사용하면 문자가 대문자인지 소문자인지에 관계없이 문자열을 편리하게 비교할 수 있습니다.

루프에서 Character.isLowerCase() 사용

이전 단계에서는 대소문자를 무시하고 전체 문자열을 비교하는 방법을 배웠습니다. 때로는 문자열 내의 개별 문자를 검사하고 소문자 또는 대문자인지 확인해야 할 수 있습니다. Java 는 Character 클래스에서 이를 위한 유용한 메서드를 제공합니다.

이 단계에서는 루프 내에서 Character.isLowerCase() 메서드를 사용하여 문자열의 소문자 수를 계산합니다.

  1. WebIDE 가 아직 열려 있지 않다면 엽니다.

  2. 왼쪽의 파일 탐색기에서 ~/project 디렉토리에 있는지 확인합니다.

  3. ~/project 디렉토리에 CountLowercase.java라는 새 파일을 만듭니다.

  4. 편집기에서 CountLowercase.java 파일을 엽니다.

  5. 다음 코드를 복사하여 편집기에 붙여넣습니다.

    public class CountLowercase {
        public static void main(String[] args) {
            String text = "Hello World 123!";
            int lowercaseCount = 0;
    
            // 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 a lowercase letter
                if (Character.isLowerCase(character)) {
                    lowercaseCount++; // Increment the counter if it's lowercase
                }
            }
    
            System.out.println("The string is: \"" + text + "\"");
            System.out.println("Number of lowercase letters: " + lowercaseCount);
        }
    }

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

    • 대문자, 소문자, 숫자 및 기호가 혼합된 String 변수 text가 있습니다.
    • 정수 변수 lowercaseCount를 0 으로 초기화합니다. 이 변수는 소문자 수를 저장합니다.
    • for 루프를 사용하여 문자열의 각 문자를 반복합니다. 루프는 인덱스 0 부터 문자열 길이 (포함하지 않음) 까지 실행됩니다.
    • text.charAt(i)는 현재 인덱스 i의 문자를 가져옵니다.
    • Character.isLowerCase(character)는 주어진 character가 소문자이면 true를 반환하고, 그렇지 않으면 false를 반환하는 메서드입니다.
    • Character.isLowerCase()true를 반환하면 lowercaseCount를 증가시킵니다.
    • 마지막으로, 원래 문자열과 소문자 총 수를 출력합니다.
  6. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  7. WebIDE 하단에서 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

  8. Java 프로그램을 컴파일합니다.

    javac CountLowercase.java

    컴파일이 성공하면 CountLowercase.class 파일이 생성됩니다.

  9. 컴파일된 Java 프로그램을 실행합니다.

    java CountLowercase

    다음 출력이 표시됩니다.

    The string is: "Hello World 123!"
    Number of lowercase letters: 8

    출력은 문자열 "Hello World 123!"에 8 개의 소문자 ('e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd') 가 있음을 보여줍니다.

루프 내에서 Character.isLowerCase()를 사용하면 문자열의 문자별 분석을 수행할 수 있으며, 이는 다양한 텍스트 처리 작업에 유용합니다.

문자가 아닌 문자 무시

이전 단계에서는 소문자 수를 계산했습니다. 그러나 문자열에는 숫자, 공백 및 기호와 같은 다양한 문자가 포함될 수 있습니다. 문자열을 비교하거나 내용을 분석할 때 이러한 문자 이외의 문자를 무시하려는 경우가 많습니다.

이 단계에서는 Character.isLetter() 메서드를 사용하여 문자 문자만 처리하고 다른 모든 문자를 무시하도록 프로그램을 수정합니다.

  1. WebIDE 가 아직 열려 있지 않다면 엽니다.

  2. 이전 단계에서 생성한 CountLowercase.java 파일을 엽니다.

  3. 문자가 소문자인지 확인하기 전에 문자가 문자인지 확인하는 코드를 포함하도록 코드를 수정합니다. 기존 코드를 다음으로 바꿉니다.

    public class CountLowercase {
        public static void main(String[] args) {
            String text = "Hello World 123!";
            int lowercaseCount = 0;
            StringBuilder lettersOnly = new StringBuilder(); // To store only letter characters
    
            // 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 a letter
                if (Character.isLetter(character)) {
                    lettersOnly.append(character); // Add the letter to our new string
    
                    // Check if the letter is lowercase
                    if (Character.isLowerCase(character)) {
                        lowercaseCount++; // Increment the counter if it's lowercase
                    }
                }
            }
    
            System.out.println("The original string is: \"" + text + "\"");
            System.out.println("Letters only string: \"" + lettersOnly.toString() + "\"");
            System.out.println("Number of lowercase letters (ignoring non-letters): " + lowercaseCount);
        }
    }

    추가 및 변경 사항은 다음과 같습니다.

    • lettersOnly라는 StringBuilder를 도입했습니다. StringBuilder는 특히 루프에서 문자를 추가할 때 문자열을 효율적으로 구축하는 데 사용됩니다.
    • 루프 내에서 if (Character.isLetter(character)) 조건을 추가했습니다. 이는 현재 character가 문자 (대문자 또는 소문자) 인지 확인합니다.
    • 문자가 문자인 경우 lettersOnly.append(character)를 사용하여 lettersOnly StringBuilder에 추가합니다.
    • Character.isLowerCase(character) 확인은 이제 Character.isLetter() 확인 내부에 중첩되어 실제로 문자인 문자 중에서만 소문자를 계산하도록 합니다.
    • 마지막으로, 원래 문자열, 문자만 포함하는 문자열 및 해당 문자 중 소문자 수를 출력합니다.
  4. 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  5. WebIDE 하단에서 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

  6. 수정된 Java 프로그램을 컴파일합니다.

    javac CountLowercase.java

    컴파일 오류가 없는지 확인합니다.

  7. 컴파일된 Java 프로그램을 실행합니다.

    java CountLowercase

    다음 출력이 표시됩니다.

    The original string is: "Hello World 123!"
    Letters only string: "HelloWorld"
    Number of lowercase letters (ignoring non-letters): 8

    "Letters only string"이 이제 "HelloWorld"만 포함하고 소문자 수가 여전히 8 인 것을 확인하십시오. 실제 문자 중에서만 소문자를 계산하기 때문입니다.

Character.isLetter()를 사용하면 추가로 처리하기 전에 문자열에서 영숫자가 아닌 문자를 필터링해야 할 때 매우 유용합니다.

요약

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

둘째, 전체 세부 정보는 제공되지 않았지만, 단계에 따라 루프를 사용하여 문자열을 반복하고 Character.isLowerCase()를 활용하여 개별 문자가 소문자인지 확인하는 방법을 배우고, 이 과정에서 문자 이외의 문자를 무시하는 방법도 고려할 것입니다.