检查字符串是否包含主题标签,然后更改主题标签颜色

时间:2012-07-18 18:25:06

标签: iphone string parsing ios5 twitter

我开发的iPhone应用程序从twitter获取推文。我是通过Json做的,一切都很好。我正在寻找每条推文,看它是否包含一个标签,然后更改该特定标签的颜色。

例如:“这是推文#MYTWEET”

所以我希望“这是一条推文”是一种颜色而“#MYTWEET”是一种单独的颜色。我知道如何搜索主题标签,但我似乎无法弄清楚如何更改后面的文本。

编辑:

也没有特定的主题标签,因此需要能够更改出现的任何主题标签的颜色。

3 个答案:

答案 0 :(得分:11)

NSString *tweet = @"This is a tweet #MYTWEET";

NSArray *words = [tweet componentsSeparatedByString:@" "];

NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:tweet];

for (NSString *word in words) {

    if ([word hasPrefix:@"#"]) {

        // Colour your 'word' here
        NSRange matchRange = [tweet rangeOfString:word];

        [attrString addAttribute:kCTForegroundColorAttributeName 
                           value:[UIColor redColor] 
                           range:matchRange]; 
        // Remember to import CoreText framework (the constant is defined there)

    }
}

//Display your attributed string ...

注意:如果您想知道如何显示字符串,这里有一个不错的开源项目:https://github.com/AliSoftware/OHAttributedLabel

答案 1 :(得分:0)

 NSRange hashLocation = [tweetString rangeOfString:@"#MYTWEET"];
 if  (hashLocation.location == NSNotFound) 
      {
          //do coloring stuff here
      }

编辑:我认为您只想为子字符串着色。这在当前版本的iOS中是不可能的,但您可以通过为每种颜色创建标签并将它们彼此相邻放置以使其读取为单行文本来实现。

答案 2 :(得分:0)

如果您使用UILabel来显示字符串,则可以使用 ActiveLabel.swift ,这是UILabel替换支持用Swift编写的Hashtags(#),Mentions(@)和URL(http://)

enter image description here

更改用户名,主题标签和链接的颜色非常简单:

label.textColor = .blackColor()
label.hashtagColor = .blueColor()
label.mentionColor = .greenColor()
label.URLColor = .redColor()

免责声明:我是图书馆的作者。