在iphone应用程序中解析并替换@usernames和URL

时间:2011-03-08 21:59:52

标签: objective-c regex ios replace

我正在开发推特应用,需要一些帮助。我想替换@usernames和URL的w /粗体蓝色文本,并链接到我的应用程序中的相应视图。我能够解析推文文本,并使用@usernames和URL构建一个数组,但我还没弄清楚如何解析和替换内联的@usernames和URL的w /程式化文本。

基本上我希望文本看起来与官方Twitter应用程序(又名Tweetie)上的推文相似。

这是我在谷歌上发现的一条推文的例子。您会注意到@usernames和链接是蓝色的: http://www.tipb.com/images/stories/2009/02/twitter_celebs_iphone.jpg

我正在使用Google Toolbox for Mac中的GTMRegex作为正则表达式。

这是我目前的代码:

- (void)parseTweet {
NSString *text = message.text;
NSArray *a;

a = [text gtm_allSubstringsMatchedByPattern:@"@[[:alnum:]_]+"];
for (NSString *s in a) {
    NTLNURLPair *pair = [[NTLNURLPair alloc] init];
    pair.text = [NSString stringWithFormat:@"@%@", [s substringFromIndex:1]];
    pair.screenName = s;
    [links addObject:pair];
    [pair release];
}
a = [text gtm_allSubstringsMatchedByPattern:@"http:\\/\\/[^[:space:]]+"];
for (NSString *s in a) {
    NTLNURLPair *pair = [[NTLNURLPair alloc] init];
    pair.text = s;
    pair.url = s;
    [links addObject:pair];
    [pair release];
}
a = [text gtm_allSubstringsMatchedByPattern:@"https:\\/\\/[^[:space:]]+"];
for (NSString *s in a) {
    NTLNURLPair *pair = [[NTLNURLPair alloc] init];
    pair.text = s;
    pair.url = s;
    [links addObject:pair];
    [pair release];
}

}

1 个答案:

答案 0 :(得分:0)

您使用什么类型的ViewController? 不知道我是否理解你的问题,但也许有助于使用UIWebView来显示你的数组内容。

然后,您可以轻松地包含一些本地样式表,以便按照您希望的方式设置链接的样式。