투케이2K

287. (AndroidStudio/android/java) Html fromHtml 사용해 html 태그 제거 수행 및 replaceAll 이중 공백 제거 실시 본문

Android

287. (AndroidStudio/android/java) Html fromHtml 사용해 html 태그 제거 수행 및 replaceAll 이중 공백 제거 실시

투케이2K 2022. 3. 31. 15:03

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java

 

[소스 코드]

    // TODO [html 형식 태그 제거 문자열 데이터 반환]
    public static String htmlTagRemoveString(String data){

        /**
         * // -----------------------------------------
         * [htmlTagRemoveString 메소드 설명]
         * // -----------------------------------------
         * 1. html 형식 태그 제거 문자열 데이터 반환
         * // -----------------------------------------
         * 2. 호출 방식 :
         *   String data = "<p>test url</p><p><a href=&quot;https://www.naver.com&quot;>https://www.naver.com</a></p><p>&amp;nbsp;</p><p>입니다</p><p>&amp;nbsp;</p>";
         *
         *   C_Util.htmlTagRemoveString(data);
         * // -----------------------------------------
         * 3. 리턴 데이터 : html 형식 태그 제거 문자열 반환
         * // -----------------------------------------
         * */

        // [리턴 데이터 변수 선언 실시]
        String result = "";

        // [문자열 데이터 널 판단 수행 실시]
        if (data != null
                && data.length()>0
                && data.trim().equals("") == false
                && data.trim().equals("null") == false
                && data.trim().equals("undefined") == false){ // [널이 아닌 경우]

            try {
                // [html 태그 1차 제거 실시]
                result = Html.fromHtml(data).toString();

                // [html 태그 2차 제거 위해 [&] 이스케이프 문자 카운트 실시]
                int checkCount = 0;
                for (int i=0; i<result.length(); i++){
                    if (result.charAt(i) == '&'){
                        checkCount ++;
                    }
                }
                if (checkCount > 0){
                    for (int k=0; k<checkCount; k++){
                        // [html 태그 엔티티 문자 제거 실시]
                        result = Html.fromHtml(result).toString();
                    }
                }

                // [html 태그 연속 공백 제거 실시]
                result = result.replaceAll("\\s+", " ");

                // [문자열 양쪽 끝 공백 제거 실시]
                result = result.trim();
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }

        // [로그 출력 실시]
        ///*
        Log.i("---","---");
        Log.d("//===========//","================================================");
        Log.i("","\n"+"[C_Util >> htmlTagRemoveString() :: html 형식 태그 제거 문자열 데이터 반환 실시]");
        Log.i("","\n"+"[input :: "+String.valueOf(data)+"]");
        Log.i("","\n"+"[result :: "+String.valueOf(result.toString())+"]");
        Log.d("//===========//","================================================");
        Log.i("---","---");
        // */

        // [리턴 데이터 반환 실시]
        return result;
    }
 

[결과 출력]

 

 

반응형
Comments