Konvertieren Sie das Unicode-Symbol oder seine XML/HTML-Entitäten in seine Unicode-Nummer in Swift

Lesezeit: 2 Minuten

Benutzer-Avatar
Jordan H

Gegeben entweder ein Unicode-Symbol als a String oder seine XML/HTML-Entitäten, wie könnte man seine Unicode-Nummer generieren? Zum Beispiel, wenn Sie die Zeichenfolge erhalten "෴"und Sie könnten seinen HTML-Code generieren (෴), wie könnten Sie dann seine Unicode-Nummer generieren (U+0DF4)?

Ich generiere derzeit die HTML-Entitäten mit der CFStringTransform API und Verwendung kCFStringTransformToXMLHex für die Verwandlung. Aber es gibt keine Transformation für die Unicode-Nummer selbst.

Benutzer-Avatar
Leo Dabus

aktualisieren: Xcode 11.4 • Schnell 5.2

extension String {
    var data: Data { .init(utf8) }
    var html2AttributedString: NSAttributedString? {
        do {
            return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding: String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            print(error)
            return nil
        }
    }
    var html2String: String { html2AttributedString?.string ?? "" }
    var unicodes: [UInt32] { unicodeScalars.map(\.value) }
}

let str = "<span>&euro;€</span>".html2String  // "€€"
str.unicodes                                  // [8364, 8364]


extension StringTransform {
    static let toUnicodeHex = Self("Hex/Unicode")
    static let toJavaHex = Self("Hex/Java")
    static let toPerlHex = Self("Hex/Perl")
}

extension String {
    var convertedToUnicodeHex: String { applyingTransform(.toUnicodeHex, reverse: false) ?? "" }
    var convertedToJavaHex: String { applyingTransform(.toJavaHex, reverse: false) ?? "" }
    var convertedToXMLHex: String { applyingTransform(.toXMLHex, reverse: false) ?? "" }
    var convertedToPerlHex: String { applyingTransform(.toPerlHex, reverse: false) ?? "" }
}

"෴".convertedToUnicodeHex  // U+0DF4
"෴".convertedToJavaHex     // \u0DF4
"෴".convertedToXMLHex      // &#xDF4;
"෴".convertedToPerlHex     // \x{DF4}
"෴".unicodes               // [3572]
0x0DF4                      // 3572

Benutzer-Avatar
Scinfu

Mit meinem Schnelle Suppees ist leicht.
SwiftSoup ist eine reine Swift-Bibliothek, plattformübergreifend (macOS, iOS, tvOS, watchOS und Linux!)

let text = "Hello &<> Å å π 新 there ¾ © »"

print(Entities.escape(text))
print(Entities.unescape(text))

print(Entities.escape(text, OutputSettings().encoder(String.Encoding.ascii).escapeMode(Entities.EscapeMode.base)))
print(Entities.escape(text, OutputSettings().charset(String.Encoding.ascii).escapeMode(Entities.EscapeMode.extended)))
print(Entities.escape(text, OutputSettings().charset(String.Encoding.ascii).escapeMode(Entities.EscapeMode.xhtml)))
print(Entities.escape(text, OutputSettings().charset(String.Encoding.utf8).escapeMode(Entities.EscapeMode.extended)))
print(Entities.escape(text, OutputSettings().charset(String.Encoding.utf8).escapeMode(Entities.EscapeMode.xhtml)))

Ausgabe:

"Hello &amp;&lt;&gt; Å å π 新 there ¾ © »"
"Hello &<> Å å π 新 there ¾ © »"


"Hello &amp;&lt;&gt; &Aring; &aring; &#x3c0; &#x65b0; there &frac34; &copy; &raquo;"
"Hello &amp;&lt;&gt; &angst; &aring; &pi; &#x65b0; there &frac34; &copy; &raquo;"
"Hello &amp;&lt;&gt; &#xc5; &#xe5; &#x3c0; &#x65b0; there &#xbe; &#xa9; &#xbb;"
"Hello &amp;&lt;&gt; Å å π 新 there ¾ © »"
"Hello &amp;&lt;&gt; Å å π 新 there ¾ © »"

1017710cookie-checkKonvertieren Sie das Unicode-Symbol oder seine XML/HTML-Entitäten in seine Unicode-Nummer in Swift

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy