Ожидаемый шестнадцатеричный код в фигурных скобках после выхода из Юникода

Это работало в первой бета-версии Swift.

var degree = "\u00B0" // degree symbol

Теперь я получаю эту ошибку, и я не понимаю, что мне нужно сделать, чтобы исправить ее в Xcode 6 Beta 5.

Expected hexadecimal code in braces after unicode escape

3 ответа

Решение

Правильный код:

var degree = "\u{00B0}" // degree symbol

Из примечаний к выпуску Xcode 6 beta 4:

Экранирующие последовательности \x, \u и \U в строковых литералах были объединены в единый и менее подверженный ошибкам синтаксис \u{123456}. (17279286)

Использовать динамически генерируемый

extension String {
    func hexToDecimal() -> String {
        var myValue = self
        if self.hasPrefix("0x") || self.hasPrefix("0X") {
            let start = self.index(self.startIndex, offsetBy: 2)
            myValue = String(self[start...])
        }

        var sum = 0
        for num in myValue.uppercased().utf8 {
            sum = sum * 16 + Int(num) - 48 
            if num >= 65 {
                sum -= 7
            }
        }
        return String(sum)
    }
}

let unicodeValue = "80" // decimal

// or 

let unicodeValue = "0x50".hexToDecimal()

if let uInt8 = UInt8(unicodeValue) {
    let scalar = UnicodeScalar(uInt8)
    let str = String(scalar)
}

Используя эти строки кода, мы можем преобразовать шестнадцатеричный текст в соответствующий символ.

       private func getDecodedUrl(url: String) -> String {
     let str: String = url.replacingOccurrences(of: "'\'", with: "\\")
     return str
 }

 let webUrl = NSMutableString( string: self.getDecodedUrl(url: convertedString) )
 CFStringTransform( webUrl, nil, "Any-Hex/Java" as NSString, true)
 print(webUrl)
Другие вопросы по тегам