【问题标题】:Remove empty arrays? Swift 5删除空数组?斯威夫特 5
【发布时间】:2020-04-30 12:27:56
【问题描述】:

您好,我正在使用以下内容:

let str = TextField.text!
let array = str.components(separatedBy: " ")

print(array)
print(array.count)

TextField 输入可以是:“一二三”

哪个会打印
[“一二三”] 3

但有时文本输入到达:“一二三”或“一二 三”或“一二三”

我怎样才能得到没有空“”的所有组件并且仍然有 3 个计数。而不是额外的空间占额外的组件?

或者我如何从包含单独单词的字符串创建一个数组,无论它们如何被弃用。我只需要所有单独的单词。

【问题讨论】:

    标签: arrays swift string


    【解决方案1】:

    您可以改用split(separator:):

    let text = " ONE   TWO THREE  "
    
    print(text.components(separatedBy: " "))
    // ["", "ONE", "", "", "TWO", "THREE", "", ""]
    
    print(text.split(separator: " ").map(String.init))
    // ["ONE", "TWO", "THREE"]
    

    该方法有一个omittingEmptySubsequences: 参数,默认为true。它返回一个Substrings 数组,必要时可以映射到“真实”Strings。

    【讨论】:

    • 谢谢大家,两个答案都很棒,可以做我需要做的事情。有没有办法将当前代码也更改为具有多个分隔符?所以 inouttext 可能是:“一,二”或“一,二三”等?只有单词返回?
    • @PaulFerga:在这种情况下,您可能希望将components(separatedBy:) 与CharacterSet 和vadian 的解决方案一起使用。另一种方法是将enumerateSubstrings() 与.byWords 选项一起使用。
    【解决方案2】:

    按字面意思按你的要求做

    var array = str.components(separatedBy: " ")
    array.removeAll{$0.isEmpty}
    

    【讨论】:

    • 或.filter { !$0.isEmpty } 这样您就不需要可变变量了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2017-03-24
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多