2011년 5월 18일 수요일

[JAVA] 대소문자 관계없이 검색어 찾아 강조문구로 바꾸기..

[JAVA] 대소문자 관계없이 검색어 찾아 강조문구로 바꾸기..
// 검색시 대소문자 관계없이 강조문구로 바꾸기...
public String convertWords(String oriString, String findword)
{
   // replaceAll ==> 버그 있음.. 검색어 [강풀] ==> 결과 : [강풀][강풀] 일케 두번 나온다..
   StringBuffer newString  = new StringBuffer(oriString);
   StringBuffer tmpText    = new StringBuffer(oriString.toUpperCase()); // 임시로 사용할 원본의 대문자..
   String newText              = oriString.toUpperCase(); // 원문의 복사본을 대문자로 바꾸기..
   findword                        = findword.toUpperCase(); // 검색어도 대문자로..

   newText = newText.replaceAll(findword, "<font color=red>" + findword + "</font>"); // 일단 복사본을 원하는 강조문구로 바꾸어 놓는다..
   int leng = newText.length() - 1;

   for (int i = 0; i < leng; i ++ )
   {
       char chr = newText.charAt(i);
       try
       {
           if (chr != tmpText.charAt(i)) // 강조문구 적용부분을 찾는다...
           {
               tmpText.insert(i, chr);     // 길이를 맞추기위해 여기에도 삽입한다.
               newString.insert(i, chr);   // 원문에 강조문구를 삽입한다..
           }
       }
       catch (Exception ee) // 맨뒤쪽에 강조문구가 들어가는경우 길이차이로 String index out of range 발생..
       {
           tmpText.append(chr);
           newString.append(chr);
       }
   }

   return newString.toString();
}

===> 제목, 내용에 적용하면 좋을 듯...냐하하..

댓글 없음:

댓글 쓰기