【问题标题】:Swift string to ascii array CyrillicSwift字符串到ascii数组西里尔文
【发布时间】:2016-11-28 16:32:08
【问题描述】:

此字符串扩展名适用于拉丁字符,但不适用于西里尔字母。有人能解释一下为什么吗,我该如何解决?

extension String {
    var asciiArray: [UInt32] {
        return unicodeScalars.filter{$0.isASCII}.map{$0.value}
    }
}

【问题讨论】:

  • 什么是样本输入和预期输出?将西里尔字符转换为 ASCII 是没有意义的。你想要 UTF-8,Unicode 标量,...? – 也许您只需要删除过滤器?
  • "适用于拉丁字符,但不适用于西里尔字母" - 它以何种方式起作用和不起作用?
  • 西里尔字符不是 ASCII 字符。 ASCII 仅涵盖所有可能的 Unicode 字符中的前 255 个字符。
  • 您正在尝试创建一个 asciiArray 来表示非 ascii 字符。这应该如何工作?

标签: swift string ascii cyrillic


【解决方案1】:

我认为您将原始 ASCII 标准与其西里尔字母扩展名之一(例如 KOI-8R)混淆了。原始的 ASCII 是 7 位的,而扩展将使用 127 以上(最多 255)的代码。

UnicodeScalar 类型上 Swift 的 isASCII 属性指示标量是否来自原始 ASCII。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    相关资源
    最近更新 更多