我有一个NSAttributedString看起来像
“Somestring 粗体%@模板%f%d 等等等等”
我希望能够像[NSString stringWithFormat:...]中那样替换格式模板部分,但要保留样式,以使替换的字符串与它们周围的样式匹配(在上面的示例中全部为粗体)。
有没有一种方法可以逐个迭代%格式的每种占位符,以便我可以使用参数列表来填充字符串?
我不想构建自己的%实现,因为我知道有100万种和一种不同的格式。
还是有一个我忽略的更简单的解决方案?
编辑:
我将解释我要解决的完整解决方案:
为了使我的团队能够归因于本地化字符串,我已经有一种编写方法
"key"="test //italic %@// **bold** __underline %d__";
如果说明符介于属性标签之间,则我希望该部分归因于该属性。目前,我可以创建一个如上所示的属性字符串,下一部分是照顾剩下的说明符。
我正在按照解析属性的顺序->应用参数...,我可以很容易地以其他方式解决它,但是我不希望格式参数弄乱属性
最佳答案
非常感谢@Rick为我指出正确的方向。
他的文章建议在应用格式字符串之前,首先遍历参数并对所有字符串或字符对象进行转义。这让我回到了我之前遇到的另一个问题,就像NSLog一样,尝试迭代不同类型(NSString,int等)的参数列表。我想我发现是不可能(或者至少真的很难)的方法,NSLog可以这样做的原因是它知道通过格式说明符(%@,%i等)期望的类型。
我意识到我实际上可以通过转义格式字符串本身来获得相同的效果,而不是通过转义参数。
例:
format: "test //italic %@//"
args: "text // more text"
脚步:
显然,//-TAG-//仍可以写在参数中以弄乱样式,但是根据您用作替换的对象,发生这种情况的可能性基本上为零。