【发布时间】:2018-03-12 05:20:15
【问题描述】:
我想写一个函数,它接受一个字符串并改变特殊字符中所有单词的颜色。例如:
这是一个包含 [示例词] 的 [示例] 字符串
我想更改上述字符串中[Sample] 和[sample words] 的字体,因为它们都被特殊字符[ ] 包围。
我尝试过使用:
NSMutableAttributedString * string = [[NSMutableAttributedString alloc]initWithString:_txtPostDiscussion.text];
NSArray *words=[_txtPostDiscussion.text componentsSeparatedByString:@" "];
for (NSString *word in words) {
if ([word hasPrefix:@"["] && [word hasSuffix:@"]"] ) {
NSRange range=[_txtPostDiscussion.text rangeOfString:[NSString stringWithFormat:@"%@ %@",pre,suf]];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:107.0/255.0 green:148.0/255.0 blue:187.0/255.0 alpha:1.0] range:range];
[_txtPostDiscussion setAttributedText:string];
}
}
我也尝试使用正则表达式来获取特定特殊字符内的所有单词,但我无法制作这样的正则表达式。
【问题讨论】:
-
使用
NSScanner可能会更容易。 -
正则表达式可能是
"\\w+(?=[^\\[\\]]*])"(如果括号总是平衡的)。 -
这是另一个正则表达式
(\G(?!\A)\s+|\[)([^\s\]\[]+),您可以使用它,但您必须连接第 1 组和修改后的第 2 组。
标签: ios objective-c regex