2010-12-12 53 views
5

J'ai un NSString comme suit:Retirez une partie d'un NSString

<img alt="996453912" src="http://d2gg0uigdtw9zz.cloudfront.net/large/996453912.jpg" /><a href="http://www.dealcatcher.com/shop4tech-coupons">Shop4Tech Coupons</a> 

Je ne ai besoin de la première partie (avant la <a href partie), et je ne peux pas comprendre comment supprimer la deuxième partie.

J'ai essayé une tonne, mais cela n'a pas fonctionné.

+2

Quelles méthodes avez-vous essayé? – Abizern

+0

J'ai essayé Componentsseperatedby et j'en ai cherché d'autres, mais je n'en trouve pas d'autres. –

Répondre

18

Utilisez quelque chose comme:

NSRange rangeOfSubstring = [string rangeOfString:@"<a href"]; 

if(rangeOfSubstring.location == NSNotFound) 
{ 
    // error condition — the text '<a href' wasn't in 'string' 
} 

// return only that portion of 'string' up to where '<a href' was found 
return [string substringToIndex:rangeOfSubstring.location]; 

Ainsi, les deux méthodes pertinentes sont substringToIndex: et rangeOfString:.

3

Il existe une section dans la référence NSString Class à propos de Finding Characters and Substrings qui répertorie certaines méthodes utiles.

Et dans le Guide de programmation chaîne Il y a une section sur Searching, Comparing and Sorting Strings.

Je ne suis pas shirty en signalant ces liens. Vous avez dit que vous n'avez pas trouvé de méthodes, alors voici quelques références pour vous aider à savoir où chercher. Apprendre à lire la documentation fait partie de l'apprentissage de l'utilisation des cadres Cocoa et Cocoa-Touch.

0

Vous pouvez utiliser quelque chose de similaire à cette version modifiée de ce qui a été posté comme réponse à une question similaire ici https://stackoverflow.com/a/4886998/283412. Cela prendra votre chaîne HTML et dépouiller la mise en forme. Il suffit de modifier la partie while pour supprimer la regex de ce que vous voulez dépouiller:

-(void)myMethod 
{ 
    NSString* htmlStr = @"<some>html</string>"; 
    NSString* strWithoutFormatting = [self stringByStrippingHTML:htmlStr]; 
} 

-(NSString *)stringByStrippingHTML:(NSString*)str 
{ 
    NSRange r; 
    while ((r = [str rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound) 
    { 
    str = [str stringByReplacingCharactersInRange:r withString:@""]; 
    } 
    return str; 
}