<p><p>class SoundSearcher {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>private static final char HANGUL_BEGIN_UNICODE = 44032;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>private static final char HANGUL_LAST_UNICODE = 55203;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>private static final char HANGUL_BASE_UNIT = 588;</p><p><br></p><p><span class="Apple-tab-span" style="white-space:pre"> </span>private static final char[] INITIAL_SOUND = { 'ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ',</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ' };</p><p><br></p><p><span class="Apple-tab-span" style="white-space:pre"> </span>private static boolean isInitialSound(char searchar) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>for (char c : INITIAL_SOUND) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if (c == searchar) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>return true;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>return false;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><br></p><p><span class="Apple-tab-span" style="white-space:pre"> </span>private static char getInitialSound(char c) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>int hanBegin = (c - HANGUL_BEGIN_UNICODE);</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>int index = hanBegin / HANGUL_BASE_UNIT;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>return INITIAL_SOUND[index];</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><br></p><p><span class="Apple-tab-span" style="white-space:pre"> </span>private static boolean isHangul(char c) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>return HANGUL_BEGIN_UNICODE <= c && c <= HANGUL_LAST_UNICODE;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><br></p><p><span class="Apple-tab-span" style="white-space:pre"> </span>public SoundSearcher() {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><br></p><p><span class="Apple-tab-span" style="white-space:pre"> </span>public static boolean matchString(String value, String search) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>int t = 0;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>int seof = value.length() - search.length();</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>int slen = search.length();</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if (seof < 0)</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>return false;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>for (int i = 0; i <= seof; i++) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>t = 0;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>while (t < slen) {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if (isInitialSound(search.charAt(t)) == true</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>&& isHangul(value.charAt(i + t))) {</p><p><br></p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if (getInitialSound(value.charAt(i + t)) == search</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>.charAt(t))</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>t++;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>else</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>break;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>} else {</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if (value.charAt(i + t) == search.charAt(t))</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>t++;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>else</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>break;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>if (t == slen)</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>return true;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>return false;</p><p><span class="Apple-tab-span" style="white-space:pre"> </span>}</p><p>}</p><p><br></p><p>어플 검색기능에서 가져온건데..도통 뭔소린지...</p><p>크게는 글자를 입력하면 글자를 매칭에서 db를 가져오는건데..이걸 세부적으로 따지니깐</p><p>머리가 안돌아가네요..유니코드를 이용해서 한글값을 가져오고 비교해서 한글이 맞는지 확인하고..</p><p>또 뭐있는건지...하..이걸 어떻게 설명하라고 주신건지...도와주세요..오유님들...</p></p>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.