hsleedevelop
hsleedevelop
hsleedevelop
  • 분류 전체보기 (22)
    • Develop (22)
      • CS (1)
      • iOS (7)
      • Swift (13)
      • SwiftUI (0)

최근 글

  • Xcode 14 빌드 속도 올리는 방법
    2023.01.29
    Xcode 14 빌드 속도 올리는 방법
  • 스토리보드, XIB Inspectable에 enum 연동하⋯
    2023.01.29
  • M1 ARM-64 Simulator 지원하지 않는 프레임워⋯
    2023.01.07
  • String에 HTML 링크 적용
    2023.01.07
  • Xcode 정의로 이동하지 않고 우측 에디터에서 보는 방법
    2022.11.13
    Xcode 정의로 이동하지 않고 우측 에디터에서 보는 방법

인기 글

  • [iOS][Swift] WiFi AP 목록 스캔 또는 장치⋯
    2022.08.28
  • Figma 자동 익스포트 for Xcode, Android⋯
    2022.08.28
    Figma 자동 익스포트 for Xcode, Android⋯
  • Failed to uninstall gitlab-runne⋯
    2022.09.16
    Failed to uninstall gitlab-runne⋯
  • iOS 메모리 사용량 파헤치기
    2022.09.11
  • Xcode 14 빌드 속도 올리는 방법
    2023.01.29
    Xcode 14 빌드 속도 올리는 방법

태그

  • Kingfisher SVG
  • Xcode bezel
  • Xcode Build
  • enum 연동하는 방법
  • Xcode 정의로 이동하지 않고 우측 에디터에서 보는 방법
  • 시뮬레이터
  • Xcode 14 빌드 속도 올리는 방법
  • SwiftUI 상에서 HTML 출력과 Link
  • excldue
  • html
  • Xcode
  • KingFisher에서 SVG 이미지 다운로드하는 방법
  • Link
  • CSS 적용하는 방법
  • architecturel
  • SVG download
  • xcode 꿀팁
  • 스위프트
  • ios localization
  • SVG 다운로드
  • Swift
  • XIB Inspectable
  • Simulator
  • Xcode 베젤
  • xcode 팁
  • Xcode Definition
  • Xcode 빌드
  • Xcode Build 실행 시 명확하게 표시하는 방법
  • Jump to definition
  • Xcode 정의

최근 댓글

전체 방문자
1,465
오늘
2
어제
2

티스토리

hELLO · Designed By 정상우.
hsleedevelop

hsleedevelop

Develop/Swift

String에 HTML 링크 적용

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
    }

 

 

반응형

'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
    'Develop/Swift' 카테고리의 다른 글
    • 스토리보드, XIB Inspectable에 enum 연동하는 방법
    • M1 ARM-64 Simulator 지원하지 않는 프레임워크 수정하는 방법
    • KingFisher에서 SVG 이미지 다운로드하는 방법
    • SwiftUI 상에서 HTML 출력과 Link, CSS 적용하는 방법
    html, Link, String, Swift
    hsleedevelop
    hsleedevelop
    iOS, Swift js, node js, react c, c++, .net ruby, sql
    댓글쓰기
    다음 글
    M1 ARM-64 Simulator 지원하지 않는 프레임워크 수정하는 방법
    이전 글
    KingFisher에서 SVG 이미지 다운로드하는 방법

    티스토리툴바