如何在Swift String中编写所有ASCII字符

时间:2018-08-24 14:32:48

标签: swift string ascii

试图找到将Swift中的ASCII字符写成单个字符串的最短/最紧凑的方法。例如,在JavaScript中,您可以用'\x00'来表示ASCII中等于0的十进制数,也可以编写'\0,后者要短2个字符。因此,如果这些字符很多,则文件大小要小2倍。

想知道如何在Swift中将ASCII字符0-31和127写入到单个字符串中,以使它们最小。在JavaScript中,这种外观如下:

'\0...\33abcdef...\127¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½...'

2 个答案:

答案 0 :(得分:3)

通常,您将使用\u{x},其中x是十六进制值。对于您,\u{0}\u{1f}\u{7f}

与基于C的语言一样,Swift字符串也支持\0表示“ null”,\t表示“ tab”,\n表示“ newline”和\r表示支持“回车”。与C不同,Swift不支持\b\f

如果您要创建单个String,将全部使用128个ASCII字符,则可以执行以下操作:

let ascii = String(Array(0...127).map { Character(Unicode.Scalar($0)) })

答案 1 :(得分:1)

如果您有很多这样的字符,可以将它们放在Data对象中,然后将其转换为字符串:

let data = Data(bytes: Array(0...31) + [127])
let text = String(data: data, encoding: .utf8)!

根据您的评论,您可以执行以下操作:

let tab = Data(bytes: [9])
let null = Data(bytes: [0])

let data = "abc".data(using: .utf8)! + tab + null + "morechars".data(using: .utf8)! + tab