Java 에서 문자열이 특정 접미사로 끝나는지 확인하는 방법

JavaBeginner
지금 연습하기

소개

이 랩에서는 Java 에서 문자열이 특정 접미사로 끝나는지 확인하는 방법을 배우게 됩니다. 이는 파일 형식을 검증하거나 끝 부분을 기반으로 데이터를 구문 분석하는 것과 같은 작업에 필수적인 기술입니다. endsWith() 메서드를 살펴보고, 대소문자 구분을 이해하며, 더 복잡한 검사를 위해 startsWith()와 결합하는 방법을 배우게 됩니다. 실습 예제를 통해 Java 프로그램에서 이러한 문자열 조작 기술을 사용하는 실질적인 경험을 얻을 수 있습니다.

endsWith() 를 사용하여 접미사 확인

이 단계에서는 Java 에서 endsWith() 메서드를 사용하여 문자열이 특정 접미사로 끝나는지 확인하는 방법을 살펴보겠습니다. 이는 파일 확장자를 검증하거나, 특정 패턴을 확인하거나, 끝 부분을 기반으로 데이터를 처리해야 할 때 흔히 사용되는 작업입니다.

endsWith() 메서드는 Java 의 String 클래스에 속합니다. 이 메서드는 확인하려는 접미사를 인수로 받으며, 부울 값 (boolean value) 을 반환합니다. 문자열이 지정된 접미사로 끝나면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

endsWith()가 어떻게 작동하는지 보여주는 간단한 Java 프로그램을 만들어 보겠습니다.

  1. WebIDE 편집기에서 HelloJava.java 파일을 엽니다. 열려 있지 않은 경우, 왼쪽의 파일 탐색기에서 project 폴더 내에서 찾을 수 있습니다.

  2. HelloJava.java의 기존 코드를 다음 코드로 바꿉니다.

    public class HelloJava {
        public static void main(String[] args) {
            String fileName = "document.txt";
            boolean endsWithTxt = fileName.endsWith(".txt");
    
            System.out.println("Does '" + fileName + "' end with '.txt'? " + endsWithTxt);
    
            String imageUrl = "photo.jpg";
            boolean endsWithJpg = imageUrl.endsWith(".jpg");
    
            System.out.println("Does '" + imageUrl + "' end with '.jpg'? " + endsWithJpg);
    
            String documentName = "report.pdf";
            boolean endsWithDoc = documentName.endsWith(".doc");
    
            System.out.println("Does '" + documentName + "' end with '.doc'? " + endsWithDoc);
        }
    }

    이 코드에서:

    • 세 개의 String 변수 (fileName, imageUrl, documentName) 를 선언합니다.
    • 각 문자열에 대해 endsWith() 메서드를 사용하여 특정 접미사 (.txt, .jpg, .doc) 로 끝나는지 확인합니다.
    • 결과 (true 또는 false) 는 부울 변수 (endsWithTxt, endsWithJpg, endsWithDoc) 에 저장됩니다.
    • 마지막으로, System.out.println()을 사용하여 결과를 콘솔에 출력합니다.
  3. HelloJava.java 파일을 저장합니다 (Ctrl+S 또는 Cmd+S).

  4. 이제 프로그램을 컴파일해 보겠습니다. WebIDE 하단의 터미널을 열고 ~/project 디렉토리에 있는지 확인합니다. 그런 다음 다음 명령을 실행합니다.

    javac HelloJava.java

    오류가 없으면 컴파일이 조용히 완료되고 HelloJava.class 파일이 ~/project 디렉토리에 생성됩니다.

  5. 마지막으로, java 명령을 사용하여 컴파일된 프로그램을 실행합니다.

    java HelloJava

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

    Does 'document.txt' end with '.txt'? true
    Does 'photo.jpg' end with '.jpg'? true
    Does 'report.pdf' end with '.doc'? false

    이 출력은 endsWith() 검사 결과를 보여주며, document.txt.txt로 끝나고, photo.jpg.jpg로 끝나며, report.pdf.doc로 끝나지 않음을 확인합니다.

endsWith() 메서드를 사용하여 문자열 접미사를 성공적으로 확인했습니다. 이는 Java 프로그래밍에서 자주 사용하게 될 기본적인 작업입니다.

대소문자 구분을 이용한 접미사 테스트

이전 단계에서 endsWith() 메서드를 사용하는 방법을 배웠습니다. Java 의 endsWith() 메서드가 대소문자를 구분하여 비교한다는 것을 이해하는 것이 중요합니다. 즉, "file.txt"".txt"로 끝나지만, ".TXT"로 끝나지는 않습니다.

이러한 대소문자 구분이 실제로 어떻게 작동하는지 확인하기 위해 프로그램을 수정해 보겠습니다.

  1. WebIDE 편집기에서 HelloJava.java 파일을 엽니다.

  2. 기존 코드를 다음 코드로 바꿉니다.

    public class HelloJava {
        public static void main(String[] args) {
            String fileName = "document.txt";
    
            // Case-sensitive check
            boolean endsWithLowercaseTxt = fileName.endsWith(".txt");
            System.out.println("Does '" + fileName + "' end with '.txt' (lowercase)? " + endsWithLowercaseTxt);
    
            // Case-sensitive check with uppercase suffix
            boolean endsWithUppercaseTxt = fileName.endsWith(".TXT");
            System.out.println("Does '" + fileName + "' end with '.TXT' (uppercase)? " + endsWithUppercaseTxt);
    
            String anotherFile = "IMAGE.JPG";
    
            // Case-sensitive check with lowercase suffix
            boolean endsWithLowercaseJpg = anotherFile.endsWith(".jpg");
            System.out.println("Does '" + anotherFile + "' end with '.jpg' (lowercase)? " + endsWithLowercaseJpg);
    
            // Case-sensitive check with uppercase suffix
            boolean endsWithUppercaseJpg = anotherFile.endsWith(".JPG");
            System.out.println("Does '" + anotherFile + "' end with '.JPG' (uppercase)? " + endsWithUppercaseJpg);
        }
    }

    이 업데이트된 코드에서는 메서드의 대소문자 구분 특성을 강조하기 위해 소문자 및 대문자 접미사 모두를 사용하여 endsWith()를 명시적으로 테스트하고 있습니다.

  3. HelloJava.java 파일을 저장합니다.

  4. 터미널에서 수정된 프로그램을 컴파일합니다.

    javac HelloJava.java
  5. 컴파일된 프로그램을 실행합니다.

    java HelloJava

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

    Does 'document.txt' end with '.txt' (lowercase)? true
    Does 'document.txt' end with '.TXT' (uppercase)? false
    Does 'IMAGE.JPG' end with '.jpg' (lowercase)? false
    Does 'IMAGE.JPG' end with '.JPG' (uppercase)? true

    보시다시피, endsWith() 메서드는 접미사의 대소문자가 문자열의 대소문자와 정확히 일치하지 않을 때 false를 반환했습니다.

대소문자를 구분하지 않는 검사를 수행해야 하는 경우, 일반적으로 endsWith()를 사용하기 전에 문자열과 접미사를 모두 동일한 대소문자 (소문자 또는 대문자) 로 변환합니다. 이 특정 단계에서는 다루지 않지만, 기억해 두면 유용한 기술입니다.

Java 에서 문자열을 사용할 때 대소문자 구분을 이해하는 것이 중요합니다. 많은 문자열 메서드가 기본적으로 대소문자를 구분하기 때문입니다.

startsWith() 와 endsWith() 검사 결합

endsWith()를 사용하여 문자열의 끝을 확인하는 것 외에도, startsWith() 메서드를 사용하여 문자열의 시작 부분을 확인할 수도 있습니다. 이 메서드는 endsWith()와 유사하게 작동하며, 접두사를 인수로 받아 문자열이 해당 접두사로 시작하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. endsWith()와 마찬가지로, startsWith()도 대소문자를 구분합니다.

startsWith()endsWith()를 결합하면 문자열에 대해 보다 구체적인 검사를 수행할 수 있습니다. 예를 들어, 파일 이름이 "temp_"로 시작하고 ".log"로 끝나는지 확인하고 싶을 수 있습니다.

startsWith()endsWith()를 모두 사용하도록 프로그램을 업데이트해 보겠습니다.

  1. WebIDE 편집기에서 HelloJava.java 파일을 엽니다.

  2. 기존 코드를 다음 코드로 바꿉니다.

    public class HelloJava {
        public static void main(String[] args) {
            String logFileName = "temp_application_error.log";
    
            boolean startsWithTemp = logFileName.startsWith("temp_");
            boolean endsWithLog = logFileName.endsWith(".log");
    
            System.out.println("Does '" + logFileName + "' start with 'temp_'? " + startsWithTemp);
            System.out.println("Does '" + logFileName + "' end with '.log'? " + endsWithLog);
    
            // Combine checks using the logical AND operator (&&)
            boolean isTempLogFile = startsWithTemp && endsWithLog;
            System.out.println("Is '" + logFileName + "' a temporary log file? " + isTempLogFile);
    
            String anotherFile = "data_report.txt";
    
            boolean startsWithData = anotherFile.startsWith("data_");
            boolean endsWithTxt = anotherFile.endsWith(".txt");
    
            System.out.println("Does '" + anotherFile + "' start with 'data_'? " + startsWithData);
            System.out.println("Does '" + anotherFile + "' end with '.txt'? " + endsWithTxt);
    
            boolean isDataTxtFile = startsWithData && endsWithTxt;
            System.out.println("Is '" + anotherFile + "' a data text file? " + isDataTxtFile);
        }
    }

    이 코드에서:

    • 문자열의 시작 부분을 확인하기 위해 startsWith() 메서드를 도입합니다.
    • 논리 AND 연산자 (&&) 를 사용하여 startsWith()endsWith()의 결과를 결합합니다. && 연산자는 조건이 모두 true인 경우에만 true를 반환합니다.
  3. HelloJava.java 파일을 저장합니다.

  4. 터미널에서 프로그램을 컴파일합니다.

    javac HelloJava.java
  5. 컴파일된 프로그램을 실행합니다.

    java HelloJava

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

    Does 'temp_application_error.log' start with 'temp_'? true
    Does 'temp_application_error.log' end with '.log'? true
    Is 'temp_application_error.log' a temporary log file? true
    Does 'data_report.txt' start with 'data_'? true
    Does 'data_report.txt' end with '.txt'? true
    Is 'data_report.txt' a data text file? true

    이 출력은 startsWith()endsWith()를 논리 연산자와 함께 사용하여 보다 복잡한 문자열 검사를 수행하는 방법을 보여줍니다.

이제 startsWith()endsWith()를 모두 사용하고 이를 결합하여 문자열의 시작과 끝을 모두 확인하는 방법을 배웠습니다. 이러한 메서드는 Java 에서 문자열 조작 및 유효성 검사를 위한 기본적인 도구입니다.

요약

이 랩에서는 Java 에서 endsWith() 메서드를 사용하여 문자열이 특정 접미사로 끝나는지 확인하는 방법을 배웠습니다. 파일 확장자와 같은 접미사를 확인하기 위한 기본 사용법을 살펴보고, 문자열이 지정된 접미사로 끝나는지 여부를 나타내는 부울 값을 반환하는 방식을 관찰했습니다.

또한 endsWith() 메서드의 대소문자 구분을 조사하고, 비교 전에 문자열과 접미사를 동일한 대소문자로 변환하여 대소문자를 구분하지 않는 검사를 수행하는 방법을 배웠습니다. 마지막으로, startsWith()endsWith() 메서드를 결합하여 문자열이 특정 접두사 및 접미사로 시작하고 끝나는지 확인하여, 이러한 메서드를 함께 사용하여 보다 복잡한 문자열 유효성 검사를 수행하는 방법을 시연했습니다.