Notice
Recent Posts
Recent Comments
Link
투케이2K
65. (swift/xcode) [유틸 파일] html 태그 제거 및 이중 공백 제거 문자열 데이터 반환 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[소스 코드]
// MARK: - [html 태그 제거 및 리턴 문자열 반환 메소드]
func htmlTagRemoveString(_data:String) -> String {
/*
// -----------------------------------------
[htmlTagRemoveString 메소드 설명]
// -----------------------------------------
1. html 태그 제거 및 리턴 문자열 반환 메소드
// -----------------------------------------
2. 호출 방법 :
let data = "<p>test url</p><p><a href="https://www.naver.com">https://www.naver.com</a></p><p>&nbsp;</p><p>입니다</p><p>&nbsp;</p>";
C_Util().htmlTagRemoveString(_data: data)
// -----------------------------------------
3. 리턴 반환 : html 태그 제거 문자열 데이터
// -----------------------------------------
*/
// [초기 리턴 데이터 변수 선언 실시]
var returnData = ""
// [인풋 데이터 널 체크 수행 실시]
if _data != nil
&& _data.count>0
&& _data != ""
&& _data.trimmingCharacters(in: .whitespacesAndNewlines) != ""
&& _data.trimmingCharacters(in: .whitespacesAndNewlines) != "null"
&& _data.isEmpty == false {
guard let encodedData = _data.data(using: .utf8)
else {
print("")
print("====================================")
print("[C_Util >> htmlTagRemoveString() :: html 형식 태그 제거 문자열 데이터 반환 에러]")
print("-------------------------------")
print("error [1] :: data 변환 에러")
print("====================================")
print("")
return returnData
}
// [html 태그를 제거 하기 위해 옵션 설정 실시]
let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
]
do {
// [html 태그 1차 제거 실시]
let attributed = try NSAttributedString(data: encodedData,
options: options,
documentAttributes: nil)
returnData = attributed.string
// [html 태그 2차 제거 실시]
var checkCount = 0;
for i in stride(from: 0, through: returnData.count-1, by: 1) {
let charIndex = returnData.index(returnData.startIndex, offsetBy: i)
if returnData[charIndex] == "&" {
checkCount = checkCount + 1 // [카운트 증가 실시]
}
}
if checkCount > 0 {
for k in stride(from: 0, through: checkCount-1, by: 1) {
guard let encodedData = returnData.data(using: .utf8)
else {
print("")
print("====================================")
print("[C_Util >> htmlTagRemoveString() :: html 형식 태그 제거 문자열 데이터 반환 에러]")
print("-------------------------------")
print("error [2] :: data 변환 에러")
print("====================================")
print("")
return returnData
}
do {
let attributed = try NSAttributedString(data: encodedData,
options: options,
documentAttributes: nil)
returnData = attributed.string
}
catch {
print("")
print("====================================")
print("[C_Util >> htmlTagRemoveString() :: html 형식 태그 제거 문자열 데이터 반환 에러]")
print("-------------------------------")
print("catch [2] :: \(error.localizedDescription)")
print("====================================")
print("")
}
}
}
// [문자열 연속 공백 제거 실시]
var str_array = Array(returnData)
var remove_array : Array<Int> = []
var nullCheck = 0
for j in stride(from: 0, through: str_array.count-1, by: 1) {
if j != str_array.count-1 {
var first = str_array[j].description.replacingOccurrences(of: " ", with: "")
first = first.trimmingCharacters(in: .whitespacesAndNewlines)
var second = str_array[j+1].description.replacingOccurrences(of: " ", with: "")
second = second.trimmingCharacters(in: .whitespacesAndNewlines)
if first.count == 0 && second.count == 0 {
remove_array.append(j)
}
}
}
if remove_array != nil && remove_array.count>0 && remove_array.isEmpty == false {
for k in stride(from: 0, through: remove_array.count-1, by: 1){
str_array.remove(at: remove_array[k]-k) // [한개씩 배열데이터를 삭제할 때 마다 인덱스 값을 맞추기 위함]
}
}
returnData = ""
for v in stride(from: 0, through: str_array.count-1, by: 1){
returnData = returnData + String(describing: str_array[v])
}
// [문자열 양쪽 끝 공백 제거 실시]
returnData = returnData.trimmingCharacters(in: .whitespacesAndNewlines)
}
catch {
print("")
print("====================================")
print("[C_Util >> htmlTagRemoveString() :: html 형식 태그 제거 문자열 데이터 반환 에러]")
print("-------------------------------")
print("catch [1] :: \(error.localizedDescription)")
print("====================================")
print("")
}
}
// [로그 출력 실시]
print("")
print("====================================")
print("[C_Util >> htmlTagRemoveString() :: html 형식 태그 제거 문자열 데이터 반환 실시]")
print("-------------------------------")
print("input :: \(_data)")
print("-------------------------------")
print("return :: \(returnData)")
print("====================================")
print("")
// [리턴 데이터 반환 실시]
return returnData
}
[결과 출력]
반응형
'Swift' 카테고리의 다른 글
Comments