在 Swift 中将 Markdown 格式的字符串转换为 NSAttributedString

问题描述 投票:0回答:3

有没有办法将包含 Markdown 文本(即

# heading
* list item
[a link](http://example.com)
等)的纯文本字符串转换为 Swift 中的
NSAttributedString
?我想我可以对某些 MD 模式的索引执行某种正则表达式搜索,并从中创建属性字符串,但这看起来很笨拙,对我来说感觉不对。

有更简单的方法吗?

ios swift macos markdown nsattributedstring
3个回答
19
投票

iOS 15 现在支持直接通过

NSAttributedString
/
AttributedString
类进行 Markdown 解析。

let markdownString = "..."
let attrString = try AttributedString(markdown: markdownString)

请参阅此处的详细信息:https://developer.apple.com/documentation/foundation/attributedstring


13
投票

您可以尝试使用第三方库,例如Down。这比创建自己的解析引擎简单得多。

安装此库后,您可以使用以下代码将 markdown 字符串解析为

NSAttributedString
s:

let downMdStr = Down(markdownString: yourMarkdownString)
let attributedStr = try? down.toAttributedString()

attributedStr
是一个
NSAttributedString
。不过,如果出现错误,可能会
nil
,所以记得检查一下。


9
投票

由于没有公认的答案,而且我自己对 Down 也有一些问题,所以我使用 SwiftyMarkdown 从 markdown 创建属性字符串。我对结果很满意,而且样式可以轻松调整。代码基本上是这样的:

let down = SwiftyMarkdown(string: markdownString)
let attributedString = down.attributedString()

更新:这不再是首选方式。看评论....

© www.soinside.com 2019 - 2024. All rights reserved.