Jan
Jan

Reputation: 1867

Convert unicode symbols \uXXXX in String to Character in Swift

I'm receiving via a REST API a string which contains unicode encoded characters in form of \uXXXX

e.g. Ain\u2019t which should be Ain’t

Is there a nice way to convert these?

Upvotes: 12

Views: 16776

Answers (2)

Leo Dabus
Leo Dabus

Reputation: 236568

You can apply a string transform StringTransform:

extension String {
    var decodingUnicodeCharacters: String { applyingTransform(.init("Hex-Any"), reverse: false) ?? "" }
}

let string = #"Ain\u2019t"#
print(string.decodingUnicodeCharacters)  // "Ain’t\n"

Upvotes: 14

dfrib
dfrib

Reputation: 73236

You can use \u{my_unicode}:

print("Ain\u{2019}t this a beautiful day")
/* Prints "Ain’t this a beautiful day"

From the Language Guide - Strings and Characters - Unicode:

String literals can include the following special characters:

...

  • An arbitrary Unicode scalar, written as \u{n}, where n is a 1–8 digit hexadecimal number with a value equal to a valid Unicode code point

Upvotes: 19

Related Questions