[String] 숫자만 추출

0_0ni·2023년 2월 27일

숫자만 추출

문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다.
만약 "tgeDa1h205er"에서 숫자만 추출한다면 0, 1, 2, 0, 5 이고, 이것을 자연수로 만들면 1205가 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.


제한사항

  • 첫 줄에 숫자가 섞인 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다.

입출력 예

입력

g0en2T0s8eSoft

출력

208


풀이

숫자만 골라내야 하는데, 0~9의 아스키 코드 값은 48 ~ 57임.
x >= 48 && x <= 57 을 만족하는 경우, 숫자로 판단.

"tge0Da1h205er"

  • 0 (Ascii 48)
    answer 의 초기값이 0일 때, x는 48이므로
    answer = answer * 10 + (x-48);
    0 = 0 x 10 + (48-48); ====> 0
  • 1 (Ascii 49)
    1 = 0 x 10 + (49-48); ====> 1
  • 2 (Ascii 49)
    12 = 1 x 10 + (50-48); ====> 2
  • 0 (Ascii 48)
    120 = 12 x 10 + (48-48); ====> 120
  • 5 (Ascii 49)
    1205 = 120 x 10 + (53-48); ====> 1205

    구현

    import java.util.*;
    class Main {
    
    	// (1)
    	public int solution(String s) {
       	int answer = 0;
           
           for(char x : s.toCharArray()) {
           	if (x>= 48 && x <= 57) answer = answer * 10 + (x-48);
           }
       
           return answer;
       }
       
       // (2)
    	public int solution(String s) {
       	String answer = "";
           
           for(char x : s.toCharArray()) {
           	// isDigit() : 숫자 판별 함수
    			if (Character.isDigit(x)) answer += x;
    		} // 여기까지만 하면 answer는 String이므로 "0208" 출력됨.
           
           return Integer.parseInt(answer); // int로 파싱.
       }
       
       
       public static void main(String[] args) {
       	Main T = new Main();
           Scanner kb = new Scanner(System.in);
           String str = kb.next();
           System.out.print(T.solution(str));
       }
    }

0개의 댓글