- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 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"
步骤:
显然,//-TAG-//仍然可以写在参数中以打乱样式,但是根据您使用的替代品,发生这种情况的可能性基本上为零。
关于ios - 逐个迭代格式 % 占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27121063/
我是一名优秀的程序员,十分优秀!