언어(Language)/Java

[Java] 자바 문자열 시작 문자, 끝 문자 판단 - startsWith(), endsWith()

잇트루 2022. 10. 27. 21:08
반응형

자바 언어를 통해 알고리즘 문제를 풀다 보면 특정 문자열의 시작 문자 또는 끝 문자를 판단해야 할 때가 있다.

이 경우 startsWith() 메서드와 endsWith() 메서드를 활용하면 쉽게 해결할 수 있다.

 

startsWith()

startsWith() 메서드는 특정 문자열이 입력받은 문자열로 시작하는 지를 판단하는 메서드이다.

반환 타입은 boolean으로 입력받은 문자열로 시작하는 경우 true, 그렇지 않으면 false를 반환한다.

입력 값이 문자열이기 때문에 공백도 인식하여 문자로 취급하니 이 점을 유의해야 한다.

 

사용 예제

startsWith(String prefix)

public class Test {
    public static void main(String[] args) {
        String str = "Hello World";
        System.out.println(str.startsWith("H"));
        System.out.println(str.startsWith("Hello"));
        System.out.println(str.startsWith("Hello World"));
        System.out.println(str.startsWith("World"));
    }
}
// 출력
true
true
true
false

 

또한, 두 번째 파라미터로 시작 인덱스를 지정할 수 있다.

startsWith(String prefix, int toffset)

public class Test {
    public static void main(String[] args) {
        String str = "Hello World";
        System.out.println(str.startsWith("e", 1));
        System.out.println(str.startsWith("llo", 2));
        System.out.println(str.startsWith("Hello", 1));
        System.out.println(str.startsWith("World", 6));
    }
}
// 출력
true
true
false
true

 

endsWith()

endsWith() 메서드는 startsWith() 메서드의 반대되는 역할을 한다.

특정 문자열이 입력받은 문자열로 끝나는 지를 판단한다.

반환 타입도 마찬가지로 boolean 타입으로, 입력 문자열로 끝나는 경우 true, 그렇지 않으면 false를 반환한다.

또한, 입력값이 문자열이기 때문에 공백도 인식하므로 주의해야 한다.

 

사용 예제

endsWith(String suffix)

public class Test {
    public static void main(String[] args) {
        String str = "Hello World";
        System.out.println(str.endsWith("d"));
        System.out.println(str.endsWith("ld"));
        System.out.println(str.endsWith("Hello"));
        System.out.println(str.endsWith(" World ")); // 공백 조심
    }
}
// 출력
true
true
false
false

endsWith() 메서드는 startsWith() 메서드와는 다르게 두 번째 파라미터를 지원하지 않는다.

 

응용

startsWith()와 endsWith()는 반환 값이 boolean이기 때문에 반복문, 조건문 등에 사용하기 좋은 메서드이다.

 

indexOf() 메서드를 사용하지 않고 문자열 인덱스 찾기

public class Test {
    public static void main(String[] args) {
        String str = "Hello World";

        for (int i = 0; i < str.length(); i++) {
            if (str.startsWith(" ", i)) {
                System.out.println(i);
            }
        }
    }
}
// 출력
5

 

문자열 int로 변환하여 출력하기

public class Test {
    public static void main(String[] args) {
        String str1 = "01234";
        String str2 = "12340";

        numStartWithNotZero(str1);
        numStartWithNotZero(str2);
    }

    public static void numStartWithNotZero(String str) {
        if (str.startsWith("0")) {
            System.out.println("숫자는 0으로 시작할 수 없습니다.");
        } else {
            System.out.println(Integer.parseInt(str));
        }
    }
}
반응형