Swift 2 字符串数组删除特定索引错误
Swift 2 String Array remove Spesific Index Error
我有字符串数组;
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--
我想删除 students[0],这样 students[1] 与 students[0] 的 ID 相同,而 students[0] 没有日期。
我想删除 students[4] 以便 students[3] 与 students[4] 具有相同的 ID,而 students[4] 没有日期。
在 Swift 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
}
}
}
和
我大约 5 天没有修复 tihs,谁来解决这个问题我将在 2 天后给予 500 次重复
我建议以下解决方案,因为您要删除只有 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{[=10=] == "-"}.map({ String([=10=]) })
let exists = students.filter({ (other) -> Bool in
if student == other {
return false
}
let otherId = other.characters.split{[=10=] == "-"}.map({String([=10=]) }).first!
return id.first! == otherId
}).first
if exists != nil, id.count > 1 {
return id[1].characters.filter({ [=10=] == "."}).count == 2
}
return true
}
print(filtered)
输出:
["103--5--4--", "102-2018.07.24-4--6---", "34-2018.07.24---3-4--6--"]
我有字符串数组;
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--
我想删除 students[0],这样 students[1] 与 students[0] 的 ID 相同,而 students[0] 没有日期。
我想删除 students[4] 以便 students[3] 与 students[4] 具有相同的 ID,而 students[4] 没有日期。
在 Swift 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
}
}
}
和
我大约 5 天没有修复 tihs,谁来解决这个问题我将在 2 天后给予 500 次重复
我建议以下解决方案,因为您要删除只有 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{[=10=] == "-"}.map({ String([=10=]) })
let exists = students.filter({ (other) -> Bool in
if student == other {
return false
}
let otherId = other.characters.split{[=10=] == "-"}.map({String([=10=]) }).first!
return id.first! == otherId
}).first
if exists != nil, id.count > 1 {
return id[1].characters.filter({ [=10=] == "."}).count == 2
}
return true
}
print(filtered)
输出:
["103--5--4--", "102-2018.07.24-4--6---", "34-2018.07.24---3-4--6--"]