Как обрезать строку пробелов и нулей в Swift? - PullRequest
0 голосов
/ 01 октября 2019

Так что это мой код. Я получаю распечатку всегда.

[дисплей] Неизвестный шрифт "IBM VGA"

[дисплей] "IBM VGA"

[73, 66, 77, 32, 86, 71, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Может ли это бытьпроблема с кодировкой? Любая идея, как это исправить?

        let infos = String(bytes: data[106..<127], encoding: .ascii) ?? ""

        if (sauce.dataType == 1 && (sauce.fileType == 0 || sauce.fileType == 1 || sauce.fileType == 2)) {
            switch infos.trimmingCharacters(in: .whitespacesAndNewlines) {
                case "IBM VGA":
                    sauce.font = ANSIView.Font.IBM_VGA
                default:
                    print("[display] Unknown font \"" + infos + "\"")
                    print("[display] \"" + infos.trimmingCharacters(in: .whitespacesAndNewlines) + "\"")
                    print(Array(infos.unicodeScalars).map { $0.value })
            }
        }

Обновлен с новым выходом отладки ...

Как обрезать строку с нулями?

1 Ответ

0 голосов
/ 01 октября 2019

Вы можете расширить структуру CharacterSet и объявить новое свойство константного типа:

extension CharacterSet {

    static let whitespacesNewlinesAndNulls = CharacterSet.whitespacesAndNewlines.union(CharacterSet(["\0"]))

}

Затем, чтобы обрезать нулевые символы:

infos.trimmingCharacters(in: .whitespacesNewlinesAndNulls)

При этом, используяinit(cString:encoding:) (как упоминалось в комментариях) устранит необходимость обрезать нулевые символы самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...