有没有办法将包含 Markdown 文本(即
# heading
、* list item
、[a link](http://example.com)
等)的纯文本字符串转换为 Swift 中的 NSAttributedString
?我想我可以对某些 MD 模式的索引执行某种正则表达式搜索,并从中创建属性字符串,但这看起来很笨拙,对我来说感觉不对。
有更简单的方法吗?
iOS 15 现在支持直接通过
NSAttributedString
/AttributedString
类进行 Markdown 解析。
let markdownString = "..."
let attrString = try AttributedString(markdown: markdownString)
请参阅此处的详细信息:https://developer.apple.com/documentation/foundation/attributedstring
您可以尝试使用第三方库,例如Down。这比创建自己的解析引擎简单得多。
安装此库后,您可以使用以下代码将 markdown 字符串解析为
NSAttributedString
s:
let downMdStr = Down(markdownString: yourMarkdownString)
let attributedStr = try? down.toAttributedString()
attributedStr
是一个NSAttributedString
。不过,如果出现错误,可能会nil
,所以记得检查一下。
由于没有公认的答案,而且我自己对 Down 也有一些问题,所以我使用 SwiftyMarkdown 从 markdown 创建属性字符串。我对结果很满意,而且样式可以轻松调整。代码基本上是这样的:
let down = SwiftyMarkdown(string: markdownString)
let attributedString = down.attributedString()
更新:这不再是首选方式。看评论....