来自带有格式说明符的本地化字符串的 NSAttributedString

NSAttributedString from localized string with format specifier

我有一个本地化字符串:

"%@ some text" = "%@ some text";

格式说明符 %@ 可以出现在本地化字符串的任何位置。

问题是这个字符串应该是 NSAttributedString%@ 替换和文本的其余部分应该具有不同的属性。我该如何解决这个问题?

对于这种情况,您可以使用 NSMutableAttributedStringHere 是 Apple 文档

 NSString *textToDisplay = [NSString stringWithFormat:@"%@ somet text",localizedString];
 NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:textToDisplay];
       [attrStr addAttribute:NSFontAttributeName
                       value:[UIFont fontWithName:@"Exo2-Regular" size:30]
                       range:NSMakeRange(0, locatilzedString.length)];
       [attrStr addAttribute:NSFontAttributeName
                       value:[UIFont fontWithName:@"Exo2-Bold" size:30]
                       range:NSMakeRange(locatilzedString.length, attrStr.length)];

label.attributedText = attrStr

1) 使用 NSLocalizedString().
获取本地化模板 2) 获取要插入的文本。
3) 使用 -stringWithFormat:.
结合两者 4)在模板中,使用-rangeOfString:
找到占位符的位置 5) 在格式化字符串中查找插入文本的范围,使用上一步找到的起始位置,-rangeOfString:options:range:。 (这里的第三个参数是要搜索的范围;这可以避免找到未替换的文本。)
6) 从格式化字符串创建属性字符串,使用范围将属性应用于插入的文本。