从“N”字符串中删除“@”和“:”之间的文本,同时保留后面的文本

问题描述:

因此,我正在阅读来自twitter bot的最新tweet并将其分配给字符串,但有时会直接向用户发送推文。这是一个可能看起来像什么的例子。从“N”字符串中删除“@”和“:”之间的文本,同时保留后面的文本

NSString tweet = @("@user hey heres my message: BLah blah with symbols!"); 
//part I want to keep is: " BLah blah with symbols!" 
//or it could end up being 

NSString tweet = @("@otheruser my msg is: Wow heres some more blah: and a second colon"); 
//part I want to keep is: " Wow heres some more blah: and a second colon" 

我想始终删除与用户交谈的第一部分,同时保留消息到最后。有太多不同的消息要使用“stringByReplacingOccurrencesOfString”

我不想使用twitter API的“exlude-reply”,因为这个bot非常受欢迎,并且需要将“count”应用到100以上之前

任何想法如何做到这一点?我认为这与正则表达式有关,但我之前从未使用过它们,或者能够按照我的想法获得一种工作方式。我真的很感激任何人的帮助卫生组织舒适的正则表达式

编辑:另外,如果一个正则表达式不会为这种情况下工作,ID接受限制防止解释,即:)

最简单的解决方案,我可以想到的是通过使用NSString函数componentsSeparatedBy:@":"创建一个NSMutable数组,并简单地删除第一个元素。

NSMutableArray *tweetArray = [[NSMutableArray alloc] initWithArray: [tweet componentsSeparatedByString:@":"]]; 
[tweetArray removeObjectAtIndex:0]; 

你用冒号随机事后出现问题可以通过再次一起加入件固定。

tweet = [tweetArray componentsJoinedByString:@":"]; 

编辑:修正了一个错误的用户马迪'

你必须在if语句要坚持这个代码,以便它不执行有一个冒号正常鸣叫指出。但是,您可以使用始终以@user开头的事实。

if ([tweet characterAtIndex:0] == '@' && [tweet characterAtIndex:1] != ' '){ 
    NSMutableArray *tweetArray = [[NSMutableArray alloc] initWithArray: [tweet componentsSeparatedByString:@":"]]; 
    [tweetArray removeObjectAtIndex:0]; 

    tweet = [tweetArray componentsJoinedByString:@":"]; 
} 
+1

这不适用于诸如“请从此消息中删除:”这样的消息。 – rmaddy

+1

@maddy,我不明白你的意见。 – Graytr

+0

您的代码将导致“来自此消息”。 – rmaddy

您也可以使用它。

NSString *myString = @"@username is me: by using this as sample text"; 
    NSRange range = [myString rangeOfString:@":"]; 
    NSString *newString= [myString substringFromIndex:range.location]; 
    NSLog(@"New String is : %@", newString);