Java.lang.String:InitialConsonant
초성 - initial[beginning] consonant (in a Korean orthographic syllable) -과 관련된 클래스 구현 설명.
InitialConsonant class
정규표현식을 사용하여 초성검색하는 클래스 구현체는 아래와 같다.
package -;
import com.google.common.base.Strings;
/**
* 초성검색과 관련된 유틸리티성 메서드 추출.
*
* <p>
* <h2>사용방법은 아래와 같다.</h2>
* {@code String regexp =
* InitialConsonant.getInitialConsonantRegexp(search.trim());
* if (cursor.matches(regexp) == true) // 조건검색으로 사용.
* }
* </p>
*
* @author cwlee
* @since 131217
*/
public class InitialConsonant {
public InitialConsonant() {
throw new UnsupportedOperationException();
}
/** 초성 문자열 목록. */
public static final char[] INITIAL_CONSONANT = { 'ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ',
'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ',
'ㅎ' };
/** 초성 문자인가? */
public static boolean isInitialSound(char value) {
for (char cursor : INITIAL_CONSONANT) {
if (value == cursor) {
return true;
}
}
return false;
}
/** 1개 문자에 대한 초성문자에 해당하는 정규표현식을 검출한다. */
public static String getSingleInitialConsonantRegexp(char value) {
switch (value) {
case 'ㄱ':
return "[가-깋]";
case 'ㄲ':
return "[까-낗]";
case 'ㄴ':
return "[나-닣]";
case 'ㄷ':
return "[다-딯]";
case 'ㄸ':
return "[따-띻]";
case 'ㄹ':
return "[라-맇]";
case 'ㅁ':
return "[마-밓]";
case 'ㅂ':
return "[바-빟]";
case 'ㅃ':
return "[빠-삫]";
case 'ㅅ':
return "[사-싷]";
case 'ㅆ':
return "[싸-앃]";
case 'ㅇ':
return "[아-잏]";
case 'ㅈ':
return "[자-짛]";
case 'ㅉ':
return "[짜-찧]";
case 'ㅊ':
return "[차-칳]";
case 'ㅋ':
return "[카-킿]";
case 'ㅌ':
return "[타-팋]";
case 'ㅍ':
return "[파-핗]";
case 'ㅎ':
return "[하-힣]";
}
return String.valueOf(value);
}
/** 문자열에 대한 초성문자검색 정규표현식을 검출한다. */
public static String getInitialConsonantRegexp(String search) {
final String kAnything = ".*";
StringBuilder regexp = new StringBuilder();
regexp.append(kAnything);
if (Strings.isNullOrEmpty(search) == false) {
for (char cursor : search.toCharArray()) {
if (isInitialSound(cursor) == true) {
regexp.append(getSingleInitialConsonantRegexp(cursor));
} else {
regexp.append(cursor);
}
}
}
regexp.append(kAnything);
return regexp.toString();
}
}