当前位置: 代码迷 >> 综合 >> Swift通过正则表达式获取匹配的APP版本号
  详细解决方案

Swift通过正则表达式获取匹配的APP版本号

热度:76   发布时间:2023-11-02 07:35:01.0

需求:后台判断当前版本来通知前台弹出更新app提示。

实现:获取当前版本号,传入后台,通过后台返回来实现弹框。

因为app在发布测试时为区分不同服务器版本,版本号会出现例如 1.0.0.0-test、1.0.0.0-formal 等等格式的字符串,正式release时只能是3位版本号 1.0.0。而后台的检测又是必须要传入4位纯数字版本号(1.0.0.0),所以需要由前台来做处理。

当为测试版本时提取获取字符串中的x.x.x.x格式的字符串,当为x.x.x三位时末尾补一位.0 (即x.x.x.0)。

具体实现如下: 

extension String {//保证版本号是x.x.x.x四位纯数字的版本号public func versionCheck() -> String{let pattern = "\\d+(\\.\\d+){2,3}"var subStr = [String]()let regex = try! NSRegularExpression(pattern: pattern, options:[])let matches = regex.matches(in: self, options: [], range: NSRange(self.startIndex...,in: self))//解析出子串for  match in matches {subStr.append(contentsOf: [String(self[Range(match.rangeAt(0), in: self)!])])}if subStr.count == 1 {if let s = subStr.first {if s.count == 5 {return s + ".0"}else {return subStr[0]}}else {return self}}else {return self}}
}

调用:

 let appversion = (Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "").versionCheck()