반응형
String에 HTML 링크 적용하는 방법입니다.
기본 제공하는 디텍터를 이용해서 링크를 찾고, 태그로 감싸진 경우에는 예외 처리되었습니다.
func wrapLinkText() -> String? {
let detector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
guard let matches = detector?.matches(in: self, options: [], range: NSRange(location: 0, length: self.utf16.count)),
matches.count > 0 else {
return self
}
let validators = [">", "\""]
var result = self
for match in matches.reversed() {
guard let range = Range(match.range, in: result) else { continue }
if let prefix = result[safe: result.index(range.lowerBound, offsetBy: -1)], validators.contains(prefix.string) {
continue
}
let link = result[range]
result.replaceSubrange(range, with: "<a href=\"\(link)\">\(link)</a>")
}
return result
}
반응형
'Develop > Swift' 카테고리의 다른 글
스토리보드, XIB Inspectable에 enum 연동하는 방법 (0) | 2023.01.29 |
---|---|
M1 ARM-64 Simulator 지원하지 않는 프레임워크 수정하는 방법 (0) | 2023.01.07 |
KingFisher에서 SVG 이미지 다운로드하는 방법 (0) | 2022.11.13 |
SwiftUI 상에서 HTML 출력과 Link, CSS 적용하는 방법 (0) | 2022.11.13 |
multi-line 문구 localizable.strings 적용 방법 (0) | 2022.10.13 |