투케이2K

137. (kotlin/코틀린) [유틸 파일] htmlTagRemoveString_RegExp : html 형식 태그 제거 문자열 데이터 반환 본문

Kotlin

137. (kotlin/코틀린) [유틸 파일] htmlTagRemoveString_RegExp : html 형식 태그 제거 문자열 데이터 반환

투케이2K 2022. 12. 27. 21:05

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

        // TODO [SEARCH FAST] : [RETURN] htmlTagRemoveString_RegExp : html 형식 태그 제거 문자열 데이터 반환
        fun htmlTagRemoveString_RegExp(data: String): String {

            /**
             * // -----------------------------------------
             * [htmlTagRemoveString_RegExp 메소드 설명]
             * // -----------------------------------------
             * 1. html 형식 태그 제거 문자열 데이터 반환
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * var 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_RegExp(data)
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 : html 형식 태그 제거 문자열 반환
             * // -----------------------------------------
             */


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


            // [문자열 데이터 널 판단 수행 실시]
            if (C_Util.stringNotNull(data) == true) { // [널이 아닌 경우]
                try {
                    // [html 태그를 제거 하기 위한 패턴 정의 실시]
                    val tag_pattern = "<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>" // [<p> 등 태그 제거]
                    val num_reg_entity_pattern = Pattern.compile("&#[0-9]+;") // [&#09; 형태 제거]
                    val char_reg_entity_pattern = Pattern.compile("&[a-zA-Z]+;") // [&amp; 형태 제거]
                    val char_normal_entity_pattern = Pattern.compile(" [a-zA-Z]+;") // [amp; 형태 제거]


                    // [html 태그 1차 제거 실시]
                    result = data.replace(tag_pattern.toRegex(), " ")


                    // [html 태그 2차 제거 실시]
                    val num_reg_mat = num_reg_entity_pattern.matcher(result)
                    result = num_reg_mat.replaceAll("")
                    val char_reg_mat = char_reg_entity_pattern.matcher(result)
                    result = char_reg_mat.replaceAll("")
                    val char_normal_mat = char_normal_entity_pattern.matcher(result)
                    result = char_normal_mat.replaceAll("")


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

                    // [문자열 양쪽 끝 공백 제거 실시]
                    result = result.trim()

                } catch (e: Exception) {
                    e.printStackTrace()
                }
            }


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


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

[결과 출력]

 

 

반응형
Comments