swift2 Swift 2字符串数组删除特定索引错误

41zrol4v  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(173)

我有字符串数组;

var students                      = [String]()

和我学生的数组输出:

students[0]:102----3----
students[1]:102-2018.07.24-4--6---
students[2]:103--5--4--
students[3]:34-2018.07.24---3-4--6--
students[4]:34--6---5----4--

我想删除个学生[0],这样,与学生[0] ID相同的学生[1]和学生[0]就没有日期。
我想删除个学生[4],这样学生[3]的ID与学生[4]的ID相同,并且学生[4]没有日期。
在雨燕2我怎么做呢?
必须输出

students[0]:102-2018.07.24-4--6---
students[1]:103--5--4--
students[2]:34-2018.07.24---3-4--6--

我的测试代码;

var count = 0
for mystudents in self.students {                                      
    let explode1 = "\(mystudents)".componentsSeparatedByString("-")
    let explode2 = "\(mystudents)".componentsSeparatedByString("-")                                     

    if  (explode1[0] == explode2[0]) { // HERE if equal same ids                                       
        if (explode1[1] == "" || explode2[1] == ""]){                     
           self.students.removeAtIndex(count++) // HERE gives fatal error: Index out of range
        }                                        
    }                                      
}

还有
我没有修复tihs约5天,谁会修复这个我会给予500代表后2天与奖金

7d7tgy0s

7d7tgy0s1#

我建议以下解决方案,前提是您要删除一个只有ID的对象,并且该对象与其他具有相同ID和日期的对象相匹配。如果我的理解有误,请告诉我。

let students = ["102----3----",
                    "103--5--4--",
                    "102-2018.07.24-4--6---",
                    "34-2018.07.24---3-4--6--",
                    "34--6---5----4--"]

    let filtered = students.filter { (student) -> Bool in
        let id = student.characters.split{$0 == "-"}.map({ String($0) })
        let exists = students.filter({ (other) -> Bool in
            if student == other {
                return false
            }
            let otherId = other.characters.split{$0 == "-"}.map({String($0) }).first!
            return id.first! == otherId
        }).first
        if exists != nil, id.count > 1 {
            return id[1].characters.filter({ $0 == "."}).count == 2
        }
        return true
    }
    print(filtered)

输出:

["103--5--4--", "102-2018.07.24-4--6---", "34-2018.07.24---3-4--6--"]

相关问题