1. split()
ㆍStirng 클래스 메소드
ㆍ지정한 구분자로 문자열을 나눠 배열에 저장
ㆍ구분자로 여러개 사용시 |(파이프) 사용
ㆍ구분자에 정규식도 많이 사용한다.
ㆍ예) 공백을 구분자로 문자열을 나눠 배열 arr에 저장
<split 예시>
package stringTokenizerTest; public class SplitTest { public static void main(String[] args) { String text = "Happy day"; String arr [] = text.split(" "); //foreach문으로 arr배열 출력 for(String showArr : arr) { System.out.println(showArr); } System.out.println(); String text2 = "대한&민국!만세"; String arr2 [] = text2.split("&|!"); //for문으로 arr2배열 출력 for(int i = 0; i < arr2.length; i++) { System.out.println(arr2[i]); } } } /* <출력> Happy day 대한 민국 만세 */
2. StringTokenizer
ㆍjava.util 의 메서드
ㆍ한 종류의 구분자로 문자열 분리할 때 사용
ㆍ구분자 미지정시 default값은 공백(Space)
(1)형식
StringTokenizer st = new StringTokenizer (“문자열”, “구분자”);
(2) 메소드 종류
ㆍ구분자에 의해 구분되는 덩어리들을 Token(토큰)이라 명명
ㆍnextToken() : 리턴타입 String, Token을 하나씩 꺼낸다.
ㆍhasMoreTokens() : 리턴타입 boolean, 남은 토큰있나 여부
ㆍcountTokens() : 리턴타입 int, 꺼내지 않아서 남아있는 토큰 수
ㆍ남은 토큰이 없으면 java.util.NoSuchElementException 에러 발생
(3) StringTokenizer 예제
package stringTokenizerTest; import java.util.StringTokenizer; //StringTokenizer public class StringTokenizerTest { public static void main(String[] args) { String text = "대한-민국-만세"; // 1: 전체 Token 수를 얻어 for문으로 출력 StringTokenizer st = new StringTokenizer(text, "/"); int restOfTokens = st.countTokens(); //남아있는 토큰 수 for (int i = 0; i < restOfTokens; i++) { String nextToken = st.nextToken(); //다음 토큰 출력 System.out.println(nextToken); } System.out.println(); // 2: 남아 있는 Token 확인하고 while문으로 출력 st = new StringTokenizer(text, "-"); while (st.hasMoreTokens()) { String nextToken = st.nextToken(); System.out.println(nextToken); } } } /* 대한-민국-만세 대한 민국 만세 */
3. 기타
ㆍ문자입력받을 때 nextLine사용금지
ㆍnextLine은 엔터키를 먹어버리고, 제대로 작동안한다.
ㆍfor문이 제대로 동작하질 않길래 뭐가 문제인가 찾아봤더니 nextLine이 문제였다. nextLine을 next로 바꿔버리면 대부분의 문제가 해결된다.
참고 자료
moveuk.log
도서 자바의 정석, 남궁석
'언어 > JAVA' 카테고리의 다른 글
BufferedReader/ BufferedWriter/ StringBuilder 차이 (0) | 2022.06.09 |
---|---|
for each문 (0) | 2022.04.20 |
Eclipse 이클립스 폰트 변경 (0) | 2022.04.14 |
가위바위보(Rock-Paper-Scissors Game) (0) | 2022.04.07 |
숫자를 입력 받는 Timer (0) | 2022.04.07 |