개발이야기/Java

[Java] 문자열에서 숫자만 추출하기 (메서드, 예제코드)

후린개발자 2024. 5. 16.
반응형

아래 소스코드는 문자열에서 숫자를 추출하여 정수로 변환하는 메서드를 구현하는 간단한 예제코드입니다.

 

 

1. parseInt 메서드

-입력받은 문자열이 null이거나 빈 문자열인지 확인합니다. null 이거나 비어 있으면 0을 반환합니다.

-문자열을 한 글자씩 순회하면서 각 문자가 숫자인지를 확인합니다. Character.isDigit(ch)를 사용해서 현재 문자가 숫자라면, 그 문자를 문자열 numStr에 추가합니다. numStr에는 문자열에서 추출된 숫자들만이 저장됩니다.

-numStr이 비어 있지 않다면, Integer.parseInt(numStr.toString())를 사용하여 numStr을 정수로 변환합니다.

 

 

2. main 메서드

-예제 데이터 설정: data1, data2, data3, data4, data5 문자열 변수에 각각 다른 형태의 문자열을 할당합니다. parseInt 메서드를 통해 숫자 추출의 대상이 됩니다.

-parseInt 메서드 호출 및 결과 출력: parseInt 메서드를 각각의 예제 데이터에 대해 호출하고, 반환된 결과를 출력합니다. 각 호출은 int 변수에 저장되고, System.out.println을 통해 출력됩니다.

 

 

3. 예제코드

public class TEST {
    public static int parseInt(String strParam) throws Exception {
        if (strParam == null || strParam.isEmpty()) {
            return 0; // 빈 문자열이거나 null이면 0 반환
        }

        // 숫자 형태를 담을 문자열
        StringBuilder numStr = new StringBuilder();

        // 문자열을 탐색하여 숫자를 찾음
        for (int i = 0; i < strParam.length(); i++) {
            char ch = strParam.charAt(i);
            if (Character.isDigit(ch)) {
                // 숫자인 경우 문자열에 추가
                numStr.append(ch);
            }
        }

        //숫자 형태를 정수로 변환하여 반환
        if (numStr.length() > 0) {
            return Integer.parseInt(numStr.toString());
        } else {
            return 0; // 숫자 형태를 찾지 못한 경우 0 반환
        }
    }

    public static void main(String[] args) throws Exception {
        // 예제 1: 숫자가 연속으로 나타나는 경우
        String data1 = "12345";
        int a1 = parseInt(data1);
        System.out.println("예제 1 결과: " + a1); // 출력 결과: 12345

        // 예제 2: 숫자가 중간에 끼어있는 경우
        String data2 = "abc123def456ghi";
        int a2 = parseInt(data2);
        System.out.println("예제 2 결과: " + a2); // 출력 결과: 123456

        // 예제 3: 문자열의 처음부터 숫자가 아닌 문자열이 나타나는 경우
        String data3 = "abcd123";
        int a3 = parseInt(data3);
        System.out.println("예제 3 결과: " + a3); // 출력 결과: 0

        // 예제 4: 숫자가 아예 포함되지 않는 경우
        String data4 = "abcdefgh";
        int a4 = parseInt(data4);
        System.out.println("예제 4 결과: " + a4); // 출력 결과: 0

        // 예제 5: 숫자가 문자열의 중간에 연속하지 않는 경우
        String data5 = "ab1c2d3";
        int a5 = parseInt(data5);
        System.out.println("예제 5 결과: " + a5); // 출력 결과: 1
    }
}

 


 

출력결과

반응형

댓글

💲 추천 글