当前位置: 首页 > 面试题库 >

在Swift中从单个字符串转换为ASCII值的最简单方法是什么?

羊毅庵
2023-03-14
问题内容

我只想在Swift中获取单个字符字符串的ASCII值。这是我目前正在做的事情:

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

这太丑了。必须有一个更简单的方法


问题答案:

编辑/更新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

旧答案

您可以创建一个扩展:

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值。这是 我目前正在做的事情: 这太丑了。必须有一个更简单的方法。 问题答案: *编辑/更新Swift 5.2或更高版本 在Swift 5中,您可以使用新的字符属性 isASCII and asciiValue 旧答案 您可以创建一个扩展: Swift 4.2 or later

  • 问题内容: 将格式化的字符串转换为日历的最简单,最简单的方法是什么?例如将“ dd.MM.yyyy”添加到日历? 问题答案: DateFormat df = new SimpleDateFormat(“dd.MM.yyyy”); Calendar cal = Calendar.getInstance(); cal.setTime(df.parse(stringInstanceRepresentin

  • 我一直在研究如何将字符串转换为Rust中的大写字母。到目前为止,我找到的最理想的方法是: 有没有不那么冗长的方法? 注意:这个问题是专门针对Rust 0.9的。在提问时还有另一个相关的答案,但它是针对Rust 0.8的,它有显著的语法差异,因此不适用。

  • 问题内容: 我一直在寻找将Swift中一个相当简单的JSON字符串转换为对象类型但无济于事的日子。 这是Web服务调用的代码: 我有一个快速的结构Business.swift: 这是我部署的测试服务: 如果有人通过这个指导我会很高兴。 谢谢。 问题答案: 这里有一些技巧,以简单的例子开始。 考虑您具有以下JSON Array String(类似于您的): [编辑] 摆脱null更改为: 另请参阅

  • 如何从字符串生成有效的UUID?字符串本身不是我要找的。相反,我正在寻找类似于将任何字符串转换为有效 UUID 的哈希函数。

  • 问题内容: ?将转换为并对其进行迭代?还有吗 问题答案: 我使用for循环来迭代字符串,并使用它来获取每个字符以进行检查。由于是通过数组实现的,因此该方法是恒定时间操作。 那就是我会做的。在我看来,这是最简单的。 就正确性而言,我认为这不存在。这完全取决于你的个人风格。