郑州网站个人开发,交易网站制度建设,h5页面设计是什么意思,西安企业门户网站建设0. 概览
在 Swift 的开发中#xff0c;我们经常要与字符串打交道。其中一个常见的操作就是用特定的“分隔符”来分割字符串#xff0c;这里分隔符可能不仅仅是字符#xff0c;而是多字符组成的字符串。
从 iOS 16 开始#xff0c; 新增了对应的方法来专注此事。不过我们经常要与字符串打交道。其中一个常见的操作就是用特定的“分隔符”来分割字符串这里分隔符可能不仅仅是字符而是多字符组成的字符串。
从 iOS 16 开始 新增了对应的方法来专注此事。不过对于 iOS 16 之前的系统我们又该何去何从呢 在本篇博文中您将学到以下内容 0. 概览1. 分割字符串轻而易举2. iOS 16 之前的一种解决3. 我们的小目标兼容所有 iOS4. iOS 16 之前对于 URL 特殊字符串组件分隔的解决5. 字符串分割一个实际应用总结 相信学完本篇后小伙伴们对字符串分割的实现又会有更多的理解。
那还等什么呢Let‘s split it 1. 分割字符串轻而易举
从 iOS 16 开始 为集合Collection新增了一个 split 方法它可以用和集合元素同样类型的“分隔符”来分割集合本身 字符串也算一个集合所以对于用字符串来分割字符串来说这真是恰到好处
let string Hello||World||Dear||hopy!!!
let parts string.split(separator: ||)注意这里讨论的是用字符串来分割字符串请不要将其和用字符来分割字符串相混淆因为后者是 String 本身的方法而且已经存在很久了 看来从 iOS 16 开始用字符串分割字符串简直是轻而易举不过 iOS 16 之前怎么办呢
2. iOS 16 之前的一种解决
在 iOS 16 之前的系统中我们可以借助 Objc 语言中 NSString 的神奇力量来达到同样的目的
let string Hello||World||Dear||hopy!!!
let parts (string as NSString).components(separatedBy: ||)如上代码所示我们利用 String 底层桥接 NSString 的 components() 方法做到了同样的事。
3. 我们的小目标兼容所有 iOS
为了能够在所有 iOS 上都实现字符串分割字符串的功能我们有必要将上面两种方法合并成为一个新的方法
extension String {public func splitBy(separator: String) - [String] {if #available(iOS 16.0, *) {return split(separator: separator).map(String.init)} else {return (self as NSString).components(separatedBy: separator)}}
}现在无论在何种版本的系统中我们都可以直接游刃有余的调用这个新方法了 4. iOS 16 之前对于 URL 特殊字符串组件分隔的解决
如果我们要分割的是特殊类型的字符串比如将表示 URL 链接的字符串分割成 各个 URL 组成部分我们还可以使用老朋友 NSString 的 pathComponents() 方法来完成此事 5. 字符串分割一个实际应用
在从网页中解析图片时往往会取得下面这种形式的图片地址 https://www.bilibili.com//s1.hdslb.com/bfs/static/jinkela/video/asserts/oldfanIcon.svg 注意它其中包含两个 “//” 。此时图片实际的地址应该为 https://s1.hdslb.com/bfs/static/jinkela/video/asserts/oldfanIcon.svg 我们可以利用上面的字符串分割技术来轻松修正这种类型的图片地址
enum ImageParser {// 将 https://1.com//2.com/x/a.png 形式的 URL 修正为 https://2.com/x/a.pngstatic func fixMultipleDoubleSlash(_ urlString: String) - String {var parts urlString.splitBy(separator: //)if parts.count 2 {_ parts.remove(at: 1)return parts.joined(separator: //)}return urlString}
}我们可以这样调用它
let urlString https://www.bilibili.com//s1.hdslb.com/bfs/static/jinkela/video/asserts/oldfanIcon.svglet fixedUrlString ImageParser.fixMultipleDoubleSlash(urlString)它的运行结果如下 最后让我们看一下此项技术在 App 中的实际应用 小伙伴们从上面 App 的演示中可以看到我们利用字符串分割技术成功解析出了原先无法解析的图片并将它们显示出来。棒棒哒
总结
在本篇博文中我们讨论了在 iOS 16 之前和之后如何实现字符串分割字符串的功能并用把它应用到了实际的例子中。
感谢观赏再会