如何在 WebView 里高亮显示代码片段(Code Highlighting)
August 15, 2022
1 min
本篇文章,将和大家一起讨论下,如何将数组转换成一个字 符串。 首先我们来看一组作者的字符串数组
var authors = ["Meng To", "Surya Anand", "Sai Kambampati"]
我们想将上述字符串序列化一个字符串,如下所示:
"Taught by Meng To, Surya Anand, and Sai Kambampati"
我们该如何处理呢?
首先,在编写测试相关的函数,使用 xcode 提供的 playground 非常好用。
接下来,我们创建一个函数将您的数组转换为序列化字符串并在 Playground 中对其进行测试,如下所示:
func serialized(array: [String]) -> String{ array.count <= 2 ? array.joined(separator: " and ") : array.dropLast().joined(separator: ", ") + ", and " + array.last! }
这里我们使用 dropLast() 方法(注:此方法从后往前删除指定数目的数据项,如果不填写,则默认为1,删除最后一项),先将数组中最后一项删除,使用 ”,“ 符号进行连接,然后最后一项使用 and 字符连接。
点击 play 图标,在 playground 运行我们编写的代码,正如我们期望的一样,因此我们可以在项目中进行使用。
如果你打算在项目的很多地方使用这个功能,最好把它变成一个扩展( extension )。扩展允许您向 Swift 中的现有类、结构、枚举或协议添加功能,还可以使您的代码更简洁。
在我们的例子中,我们希望将序列化函数转换为项目的可重用扩展。因此,我们可以创建一个名为 Extensions.swift 的新文件,并将以下扩展名添加到 BidirectionalCollection 协议:
extension BidirectionalCollection where Element: StringProtocol { var serialized: String { count <= 2 ? joined(separator: " and ") : dropLast().joined(separator: ", ") + ", and " + last! } }
使用上面的代码,我们可以简单地在我们项目中的任何地方调用 .serialized 字符串集合(或 BidirectionalCollection 协议),我们将得到序列化的字符串:
var authors = ["Meng To", "Surya Anand", "Sai Kambampati"] var serializedAuthors = authors.serialized // Output: "Taught by Meng To, Surya Anand, and Sai Kambampati"
注:本文属于原创文章,版权属于「前端达人」公众号及 SwiftUI.cc 所有,谢绝一切形式的转载
更多精彩内容,请关注「前端达人」