2017-03-31 5 views
-1

Donc je lis le tweet le plus récent d'un robot twitter et l'attribue à une chaîne, mais parfois il tweete directement aux utilisateurs. Voici un exemple de ce que cela pourrait ressembler. Je veux toujours supprimer la première partie qui parle à l'utilisateur, tout en gardant le message à la fin. Je ne veux pas utiliser "exlude-replies" de l'API twitter parce que ce bot est très populaire et qu'il faudrait aller chercher jusqu'à 100 car "count" s'applique. avantSupprimer le texte de NSString entre "@" et ":" tout en gardant le texte après le

une idée de comment je pourrais le faire? Je pense que cela a quelque chose à voir avec les expressions régulières, mais je ne les ai jamais utilisées auparavant et je n'ai pas réussi à en faire un qui fonctionne comme je le souhaite. Je voudrais vraiment apprécier l'aide de quelqu'un whos confortable avec regex

modifier: même si une expression régulière ne fonctionnera pas pour ce cas, id accepte une explication de la limitation que la prévention :)

Répondre

1

La solution la plus simple que je peut penser à est de créer un tableau NSMutable, en utilisant la fonction NSString componentsSeparatedBy:@":", et supprimez simplement le premier élément.

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

Votre problème avec deux points apparaissant au hasard peut être fixée après en joignant les morceaux ensemble à nouveau.

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

Edit: Correction d'une erreur signalée par l'utilisateur Maddy '

Vous devez coller ce code dans une instruction if afin qu'il n'exécute pas dans les tweets qui ont deux points normalement. Vous pouvez utiliser le fait qu'il commence toujours par @user cependant.

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

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

Ceci ne fonctionnera pas avec un message tel que "Veuillez supprimer le: de ce message". – rmaddy

+1

@maddy, je ne comprends pas votre commentaire. – Graytr

+0

Votre code entraînera "à partir de ce message". – rmaddy

0

Vous pouvez également utiliser ceci.

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);