Как написать все символы ASCII в Swift String - PullRequest
0 голосов
/ 24 августа 2018

Попытка найти самый короткий / самый компактный способ записи символов ASCII в Swift в одну строку.Например, в JavaScript вы можете сделать '\x00' для десятичного эквивалента 0 в ASCII или вы можете написать '\0, что на 2 символа короче.Поэтому, если у вас много этих символов, это в 2 раза меньше размера файла.

Хотите знать, как записать символы ASCII 0-31 и 127 в Swift, чтобы они были минимальными, в одну строку.В JavaScript этот вид выглядит следующим образом:

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

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Как правило, вы должны использовать \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)) })
0 голосов
/ 24 августа 2018

Если у вас много этих символов, возможно, поместите их в объект данных, а затем преобразуйте в строку:

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
...