[Java] 문자열 분리
Updated:
StringTokenizer 클래스와 split() 함수
StringTokenizer
- StringTokenizer는 new StringTokenizer(str, “ “) 선언되는 순간 입력받는 자리가 생긴다.
- 반복 입력을 위해 StringTokenizer 를 여러번 선언해줘야하는 경우 중에서 입력받는 수가 정수 10 이하라면 다음과 같은 형태로 사용가능
String변수.charAt(0) - 48 String변수.charAt(0) - '0'
- 반복 입력을 위해 StringTokenizer 를 여러번 선언해줘야하는 경우 중에서 입력받는 수가 정수 10 이하라면 다음과 같은 형태로 사용가능
- 문자열을 구분자 기준으로 나눠주는 함수로 앞뒤 공백을 인식을 못한다.
- 사용 예시
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); StringTokenizer stz = new StringTokenizer(str, " "); // 꺼내기1 (값이 적은경우) : 연속해서 선언 int A = Integer.parseInt(stz.nextToken); int B = Integer.parseInt(stz.nextToken); // 꺼내기2 (값이 많은경우) while문 : 배열이 필요없을 때(단순 계산 등) int sum = 0; while(stz.hasMoreTokens()){ sum += Integer.parseInt(stz.nextToken()); } // 꺼내기3 (값이 많은경우) for문 int[] nums = new int[stz.countTokens()]; int temp = stz.countTokens(); //따로 선언하지않고 바로 for문에 넣으면 안읽힘 for(int h=0; h<temp; h++) { scores[h] = Integer.parseInt(stz.nextToken()); }
함수 split()
- 앞 뒤 공백을 인식할 수 있다. (java의 trim()으로 제거)
- 빈 공백하나도 단어 1개로 인식
- 사용
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] str = br.readLine().split(" "); int A = Integer.parseInt(str[0]); int B = Integer.parseInt(str[1]);
참고
- 자바의 정석
Leave a comment