gpt4 book ai didi

ios - 逐个迭代格式 % 占位符

转载 作者:可可西里 更新时间:2023-11-01 03:55:53 31 4
gpt4 key购买 nike

我有一个 NSAttributedString 看起来像

“一些字符串 bold %@ template %f %d blah blah blah”

我希望能够像 [NSString stringWithFormat:...] 一样替换格式模板部分,但保留样式,以便替换的字符串与它们周围的样式匹配(在我上面的示例中都是粗体)。

有没有办法逐个遍历每种格式的 % 占位符,以便我可以使用参数列表来填充字符串?

我不想构建自己的 % 实现,因为我知道有一百万零一种不同的格式。

或者是否有我忽略的更简单的解决方案?

编辑:我将解释一些我正在解决的完整解决方案:

为了让我的团队能够归因于本地化字符串,我已经有了一种编写方法

"key"="test //italic %@// **bold** __underline %d__";

如果说明符位于属性标签之间,我希望该部分具有属性。目前我可以创建一个如上所示的属性字符串,下一部分是处理剩下的说明符。

我按照解析属性 -> 应用参数 的顺序进行操作,我可以用另一种方式轻松解决它,但我不希望格式参数弄乱属性

最佳答案

非常感谢@Rick 为我指明了正确的方向。

他的帖子建议在应用格式字符串之前首先检查参数并预先转义任何字符串或字符对象。这让我回到了我之前遇到的另一个问题,在尝试迭代不同类型(NSString、int 等)的参数列表时,就像 NSLog 所做的那样。我想我发现它不可能(或者至少真的很难)做到这一点,而 NSLog 可以的原因是它知道通过格式说明符(%@、%i 等)期望什么类型).

我意识到实际上我可以获得相同的效果,而不是通过转义参数,而是通过转义格式字符串本身。

例子:

format: "test //italic %@//"
args: "text // more text"

步骤:

  1. 首先将//的所有实例替换为//-TAG-//
  2. 应用论点
  3. 确定在//-TAG-//之间应用样式的位置

显然,//-TAG-//仍然可以写在参数中以打乱样式,但是根据您使用的替代品,发生这种情况的可能性基本上为零。

关于ios - 逐个迭代格式 % 占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27121063/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com