从字符串数组中删除字符串对象

时间:2019-05-14 09:37:53

标签: arrays swift filter

如何从字符串数组中删除特定对象。这是我的字符串数组

[
Top cities,
==================================,
Bangalore,
Mumbai,
Delhi,
----------------------------------------,
Kerla
]

我们要删除与城市无关的这三个对象。

我尝试了下面的代码,但没有删除所有对象。它仅删除“热门城市”

if let idx = self.arrayValues.firstIndex(where: { ($0 as! String) .contains("Top") || ($0 as! String) .contains("======")||($0 as! String) .contains("------") }) {
                    self.arrayValues.remove(at: idx)
                }

可降解类

struct Service : Decodable {
    var name: String
    var id: String
}

struct Location : Decodable {

    enum CodingKeys : String, CodingKey {
        case locationList
    }
    var locationList : [String]?
}

extension Location {
    public init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        locationList = try values.decodeIfPresent([String].self, forKey: .locationList)
    }
}

我们有两种类型的响应,您可以通过“可解码类”来理解

2 个答案:

答案 0 :(得分:1)

这与接受的答案相同,但是,如果要采用功能编程方法,则可能需要执行以下操作:

let arrayValues = ["1","Top cities","2","======"]
let newArrayValues = arrayValues.filter { !$0.contains("Top") && !$0.contains("======") && !$0.contains("------") }

您可能还希望按如下所示分隔每个过滤条件:

let newArrayValues = arrayValues
    .filter { !$0.contains("Top") }
    .filter { !$0.contains("======") }
    .filter { !$0.contains("------") }

答案 1 :(得分:0)

firstIndex仅在需要所有满足过滤条件的索引时才获取第一项的索引,即可轻松使用removeAll

var arrayValues = ["1","2"]
self.arrayValues.removeAll(where: { $0.contains("Top") || $0.contains("======")|| $0.contains("------") })