Expected hexadecimal code in braces after unicode escape

前端 未结 2 1656
醉酒成梦
醉酒成梦 2020-12-16 08:53

This worked in the first beta of Swift.

var degree = \"\\u00B0\" // degree symbol

Now I\'m getting this error and I don\'t understand what

相关标签:
2条回答
  • 2020-12-16 09:31

    The correct code is:

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

    From the Xcode 6 beta 4 release notes:

    The \x, \u and \U escape sequences in string literals have been consolidated into a single and less error prone \u{123456} syntax. (17279286)

    0 讨论(0)
  • 2020-12-16 09:35

    to use a dynamically generated

    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)
    }
    
    0 讨论(0)
提交回复
热议问题