Поэтому я читаю самый последний твит от бота в твиттере и присваиваю его строке, но иногда он пишет напрямую пользователям. Вот пример того, как это может выглядеть.

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"

Я хочу всегда удалять первую часть, которая говорит с пользователем, сохраняя сообщение в конце. Слишком много разных сообщений, чтобы использовать "stringByReplacingOccurferencesOfString"

Я не хочу использовать «exlude-replies» из Twitter API, потому что этот бот очень популярен, и для этого потребуется получить до 100, так как «count» применяется раньше

Есть идеи, как я мог это сделать? Я думаю, что это как-то связано с регулярными выражениями, но я никогда раньше не использовал их и не смог заставить работать так, как мне хочется. Я был бы очень признателен за помощь от тех, кому удобно с регулярным выражением

Edit: также, если регулярное выражение не будет работать для этого случая, id принимает объяснение ограничения, предотвращающего это :)

-1
user286152 1 Апр 2017 в 01:04

2 ответа

Лучший ответ

Самое простое решение, о котором я могу подумать, - это создать NSMutablearray, используя функцию NSString componentsSeparatedBy:@":", и просто удалить первый элемент.

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

Ваша проблема с двоеточием, появляющимся случайно после этого, может быть решена путем объединения частей снова.

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

Редактировать: Исправить ошибку, указанную пользователем 'Maddy'

Вам нужно будет вставить этот код в оператор if, чтобы он не выполнялся в твитах с обычным двоеточием. Однако вы можете использовать тот факт, что он всегда начинается с @user.

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

    tweet = [tweetArray componentsJoinedByString:@":"];
}
1
Graytr 31 Мар 2017 в 22:54

Вы также можете использовать это.

  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);
0
handiansom 1 Апр 2017 в 16:11