ios - 子字符串并在它们之间进行比较
问题描述
我试图对一个字符串进行子串化,然后在两个字符串之间进行比较,依此类推..
我试过这个:
for matchdate in matches.data! {
datesarray.append(matchdate.dateGregorian!)
}
datesarray = datesarray.reduce([], {
$0.contains($1) ? $0 : $0 + [$1]
})
datesarray = datesarray.sorted()
for date in datesarray {
matchesarray.removeAll()
for match in matches.data! {
if date.prefix(10) == match.dateGregorian?.prefix(10) {
.....
}
}
}
这很好用..但是datearray不是uniq,我需要像这样在之前对其进行子串化:
for matchdate in matches.data! {
datesarray.append(String(matchdate.dateGregorian!.prefix(10)))
}
datesarray = datesarray.reduce([], {
$0.contains($1) ? $0 : $0 + [$1]
})
datesarray = datesarray.sorted()
for date in datesarray {
matchesarray.removeAll()
for match in matches.data! {
if date == String(match.dateGregorian!.prefix(10)) {
.....
}
}
}
但这不会做任何事情!我没有错误,但没有显示结果!
为什么?以及如何解决这个问题?
解决方案
正如@vadian 所说..我只是将它们转换为日期:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.locale = Locale(identifier: "en")
let date = dateFormatter.date(from:matchdate.dateGregorian!)!
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day], from: date)
let finalDate = calendar.date(from:components)
然后像这样比较它们:
if matchdate == finalDate{
.....
}
问题解决了,现在一切正常:)!
推荐阅读
- javascript - 成功的ajax调用但为什么我必须更新页面?
- javascript - 使用 2 个滑块输入生成一个矩形(画布)。在新输入上,删除 Rectangle
- vue.js - Vue-awesome-swiper 在 nuxt 通用应用程序中不起作用
- networking - 从启用 istio 的命名空间到另一个命名空间的 Istio 流量
- c# - 为 IFormFile 实施流利验证的正确方法是什么
- javascript - 从角度范围访问 JavaScript 中的值
- python - 如何为易于更改的配置文件的每个元素存储信息(PYTHON)
- c# - C# 将嵌入的 DLL 复制到用户文件夹
- extjs - 如何在 extjs 的 numberfield 上捕获粘贴事件?
- javascript - 使用 reduce 使用应用脚本将空格添加到 HTML 电子邮件