Develop/Swift

String에 HTML 링크 적용

hsleedevelop 2023. 1. 7. 17:24
반응형

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
    }

 

 

반응형