从字符串数组中过滤出空字符串

时间:2018-07-24 00:30:20

标签: arrays swift string

我从外部来源收到字符串的json数组,而我的某些字符串看起来像

"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"

我想过滤掉仅包含这些空值的所有字符串。 我已经尝试过

arr = arr.filter { (str: String) -> Bool in
            let invalid = String(data: Data.init(count: str.count), encoding: String.Encoding.utf8)
            print(str)

            return str == invalid
        }

由于这些都是空终止符,因此我决定创建一个与str相同长度的空字符串,但只包含空终止符并进行比较。

但这不起作用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我不认为这些是空终止符,因为反斜杠已转义。这些只是重复多次的四个字符序列\x00

要匹配这种模式,可以使用正则表达式:

let regex = try! NSRegularExpression(pattern: "^(?:\\\\x00)+$", options: [])
let string = "\\x00\\x00\\x00\\x00\\x00"
// the below will evaluate to true if the string is full of \x00
regex.firstMatch(in: string, options: [], range: NSRange(location: 0, length: string.count)) != nil