gpt4 book ai didi

ios - 使用 Swift 从字符串中检测数字年份

转载 作者:行者123 更新时间:2023-11-28 10:30:30 25 4
gpt4 key购买 nike

我正在寻找一种检测年份的方法,例如2019. 我认为要求是数字连续,有四位数字并且不与字母或特殊字符相邻。所以我想获得在以下每种情况下返回“2019”的方法:

"2019"
"in 2019
"Before 2019, all IOS apps were written in one of 2 ways"

但将其排除在:

"1234z20191234

有很多方法可以将字符串中的数字检测为 seen here比如

let newString = origString
.components(separatedBy:CharacterSet.decimalDigits.inverted)
.joined(separator: "")

但他们不会提取每个系列的数字来测试长度和相邻性。

数据检测器可以尝试提取一个日期,但是从可能的日期到可能已经在起始文本中的年份似乎容易出错,例如使用类似的东西:

“2018-08-31 04:00:00 +0000”, “America/Los_Angeles”, 18000.0

谁能建议一种从字符串中检索数字年份的可靠方法?

最佳答案

您可以使用正则表达式,在单词边界 (\b) 之间搜索四位数字 ([0-9]{4}),例如

let strings = [
"2019",
"in 2019",
"Before 2019, all IOS apps were written in one of 2 ways",
"1234z20191234"
]

for string in strings {
if let range = string.range(of: #"\b[0-9]{4}\b"#, options: .regularExpression) {
let year = String(string[range])
print(year)
} else {
print("No year found")
}
}

制作:

2019
2019
2019
No year found

请注意,上面使用了 Swift 5 的扩展字符串定界符,#""#。如果在早期的 Swift 版本中这样做,你会想要用另一个反斜杠来转义反斜杠:

if let range = string.range(of: "\\b[0-9]{4}\\b", options: .regularExpression) {
...
}

显然,如果您想缩小识别为年份的四位数字的范围,您必须调整正则表达式或用一些逻辑对其进行补充。但是您的问题没有确定您要使用什么标准来检测年份。

关于ios - 使用 Swift 从字符串中检测数字年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56305877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com