이전 섹션에서는 String 클래스의 Split() 메서드를 사용하여 문자열을 분해하는 방법을 배웠습니다. 이번 섹션에서는 Split() 메서드와 달리 StringTokenizer 개체를 사용하여 문자열을 분해하는 방법을 알아봅니다. 정규식을 구분 기호로 사용하지 않습니다.
먼저 개념을 알아야 합니다 - 언어 기호 소위 언어 기호는 문자열을 분석할 때 문자열을 독립적으로 사용할 수 있는 단어로 분해하는 것을 의미하며 이러한 단어를 언어 기호라고 합니다.
예를 들어 You are Welcome 문자열의 경우 공백이 문자열의 구분 표시로 사용되면 문자열에는 세 단어, 즉 세 언어 기호가 포함됩니다. 문자열 You, are, Welcome에서 쉼표가 문자열의 구분 기호로 사용되면 문자열에도 세 개의 언어 기호가 있습니다.
문자열을 분석하고 문자열을 독립적으로 사용할 수 있는 단어로 분해할 때 일반적으로 사용되는 두 가지 생성자가 있는 java.util 패키지의 StringTokenizer 클래스를 사용할 수 있습니다.
기본 구분 기호, 즉 공백 문자(여러 개의 공백은 하나의 공백으로 간주됨), 줄 바꿈 문자, 캐리지 리턴 문자, 탭 문자 및 피드 문자를 구분 기호로 사용하여 문자열 s에 대한 파서를 구성합니다.
문자열 s에 대한 구문 분석기를 구성합니다. 매개변수 delim 의 문자는 구분 기호로 사용됩니다.
참고 : 구분 기호의 모든 조합은 여전히 구분 기호입니다.
예를 들어:
StringTokenizerfenxi=newStringTokenizer(환영합니다);StringTokenizerfenxi=newStringTokenizer(당신,환영합니다,,;);
StringTokenizer 객체를 문자열 분석기로 호출합니다. 분석기는 nextToken() 메서드를 사용하여 문자열의 언어 기호를 하나씩 가져올 수 있습니다. nextToken()이 호출될 때마다 다음 언어 기호를 가져옵니다. 언어 기호를 얻으면 문자열 분석기의 계산 변수 값이 자동으로 1씩 감소됩니다. 계산 변수의 초기 값은 문자열의 단어 수와 같습니다.
일반적으로 while 루프는 언어 기호를 하나씩 가져오는 데 사용됩니다. 루프를 제어하려면 문자열에 언어 기호, 즉 값이 있는 한 StringTokenizer 클래스의 hasMoreTokens() 메서드를 사용할 수 있습니다. count 변수의 값이 0보다 크면 이 메서드는 true를 반환하고, 그렇지 않으면 false를 반환합니다. 또한 언제든지 분석기가 countTokens() 메서드를 호출하여 분석기의 count 변수 값을 가져오도록 할 수 있습니다.
예를 들어:
importjava.util.*;publicclassMain{publicstaticvoidmain(Stringargs[]){Strings=welcometodotcpp(감사합니다), nicetomeetyou;StringTokenizerfenxi=newStringTokenizer(s,(),);intnumber=fenxi.countTokens();while(fenxi.hasMoreTokens() ){Stringstr=fenxi.nextToken();System.out.print(str+);}System.out.println(총 단어 수: +number+);}}
실행 결과는 다음과 같습니다.
Welcometodotcppthankyouunicetomeetyou 총 단어 수: 9