SEStringUtilities 提供了在 Stack Exchange.app 中使用的许多有用字符串函数。
NSAttributedString+SETokenReplacement
在 NSString
和 NSAttributedString
上的分类,允许您以清晰和可本地化的方式进行字符串模板化。类似于 Mustache,但用于小字符串,并支持属性字符串。
NSAttributedString *username = ...;
NSString *creationDate = ...;
label.attributedText =
[NSLocalizedString(@"- Asked by {username} on {creationDate}", nil)
SE_attributedStringByReplacingTokensWithValues:NSDictionaryOfVariableBindings(username, creationDate)];
let username:NSAttributedString = ...
let creationDate:String = ...
label.attributedText =
NSLocalizedString("- Asked by {username} on {creationDate}", comment:"").
SE_attributedStringByReplacingTokensWithValues({"username": username, "creationDate": creationDate})
在这些示例中,username
是一个使用其 own 风格的属性字符串,而 creationDate
是一个从父属性字符串继承其样式的字符串。
NSString+SERegularExpressions
在 NSString
上提供一个分类,提供与 JavaScript 的 String.prototype.replace
相似的功能。
-[NSString SE_stringByReplacingPattern:options:withTemplate:]
与 -[NSRegularExpression stringByReplacingMatchesInString:options:range:withTemplate:]
相似,但它更简洁,因为它负责创建正则表达式并假设一些默认值。
另一方面,-[NSString SE_stringByReplacingPattern:options:withBlock:]
添加了新的功能,您可以轻松地为 block 的内容提供自己的复杂转换。 SEMarkdownEditor
使用此功能进行包括 此异常递归转换在内的复杂操作。
这两种方法都有一个 ReplacingFirstOccranceOfPattern
变体,它将更改限制为第一次匹配。
pod 'SEStringUtilities'