在Swift中从单个字符串转换为ASCII值的最简单方法是什么? [英] What's the simplest way to convert from a single character String to an ASCII value in Swift?

查看:1085
本文介绍了在Swift中从单个字符串转换为ASCII值的最简单方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只想在Swift中获取单个字符字符串的ASCII值.这是我目前的操作方式:

I just want to get the ASCII value of a single char string in Swift. This is how I'm currently doing it:

var singleChar = "a"
println(singleChar.unicodeScalars[singleChar.unicodeScalars.startIndex].value) //prints: 97

这太丑了.一定有更简单的方法.

This is so ugly though. There must be a simpler way.

推荐答案

编辑/更新Swift 5.2或更高版本

extension StringProtocol {
    var asciiValues: [UInt8] { compactMap(\.asciiValue) }
}


"abc".asciiValues  // [97, 98, 99]


在Swift 5中,您可以使用新的字符属性 isASCII asciiValue

Character("a").isASCII       // true
Character("a").asciiValue    // 97

Character("á").isASCII       // false
Character("á").asciiValue    // nil


旧答案


Old answer

您可以创建扩展程序:

Swift 4.2或更高版本

extension Character {
    var isAscii: Bool {
        return unicodeScalars.allSatisfy { $0.isASCII }
    }
    var ascii: UInt32? {
        return isAscii ? unicodeScalars.first?.value : nil
    }
}


extension StringProtocol {
    var asciiValues: [UInt32] {
        return compactMap { $0.ascii }
    }
}


Character("a").isAscii  // true
Character("a").ascii    // 97

Character("á").isAscii  // false
Character("á").ascii    // nil

"abc".asciiValues            // [97, 98, 99]
"abc".asciiValues[0]         // 97
"abc".asciiValues[1]         // 98
"abc".asciiValues[2]         // 99

这篇关于在Swift中从单个字符串转换为ASCII值的最简单方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆