我试图使用类似下面的内容在属性字符串粗体中进行多次出现
[attrStr setFont:[UIFont ...] range:[attrStr.string rangeOfString:@"hello world"]];
Run Code Online (Sandbox Code Playgroud)
如你所知,'rangeOfString'总是返回匹配的第一次出现...我还是iOS的新手,只是想知道将所有出现设置为粗体的最佳方法是什么... NSString中是否提供了任何功能?
提前致谢!
tim*_*tim 24
您应首先尝试获取字符串中的所有范围,然后为每个范围设置属性.stackoverflow上有一些很棒的代码示例:https://stackoverflow.com/a/4653266/381870
编辑:
这是给你的一个例子
- (NSArray *)rangesOfString:(NSString *)searchString inString:(NSString *)str {
NSMutableArray *results = [NSMutableArray array];
NSRange searchRange = NSMakeRange(0, [str length]);
NSRange range;
while ((range = [str rangeOfString:searchString options:0 range:searchRange]).location != NSNotFound) {
[results addObject:[NSValue valueWithRange:range]];
searchRange = NSMakeRange(NSMaxRange(range), [str length] - NSMaxRange(range));
}
return results;
}
Run Code Online (Sandbox Code Playgroud)
用法:
NSArray *results = [self rangesOfString:@"foo" inString:@"foo bar foo"];
NSLog(@"%@", results);
Run Code Online (Sandbox Code Playgroud)
给你
(
"NSRange: {0, 3}",
"NSRange: {8, 3}"
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2643 次 |
| 最近记录: |