372 votes

Garniture des espaces à partir de la fin d'un NSString

j'ai besoin de supprimer les espaces de fin de chaîne. Comment puis-je le faire? Exemple : si la chaîne est "Bonjour", elle doit devenir un "Bonjour" Merci

903voto

Dan Points 8469
NSString *string = @" this text has spaces before and after ";
NSString *trimmedString = [string stringByTrimmingCharactersInSet:
                                  [NSCharacterSet whitespaceCharacterSet]];

21voto

Matt H. Points 1995

Une autre solution consiste à créer mutable chaîne:

//make mutable string
NSMutableString *stringToTrim = [@" i needz trim " mutableCopy];

//pass it by reference to CFStringTrimSpace
CFStringTrimWhiteSpace((__bridge CFMutableStringRef) stringToTrim);

//stringToTrim is now "i needz trim"

13voto

Alex Points 81

Ici, vous allez...

 -(NSString *)removeEndSpaceFrom:(NSString *)strtoremove{
    NSUInteger location = 0;
    unichar charBuffer[[strtoremove length]];
    [strtoremove getCharacters:charBuffer];
    int i = 0;
    for ( i = [strtoremove length]; i >0; i--){
        if (![[NSCharacterSet whitespaceCharacterSet] characterIsMember:charBuffer[i - 1]]){
            break;
    }
    }
    return  [strtoremove substringWithRange:NSMakeRange(location, i  - location)];
}

Alors maintenant, il vous suffit d'appeler ..... Supossing vous avez une chaîne qui a des espaces dans le front et les espaces à la fin. et vous voulez juste pour supprimer les espaces à la fin. L'appeler comme cela.

NSString *onetwothree = @"  TestString   ";
NSString *ResultString;
ResultString = [self removeEndSpaceFrom:onetwothree];

ResultString aura pas d'espaces à la fin.

12voto

g212gs Points 256
NSString *trimmedString = [string stringByTrimmingCharactersInSet:
                              [NSCharacterSet whitespaceAndNewlineCharacterSet]];
 //for remove whitespace and new line character



NSString *trimmedString = [string stringByTrimmingCharactersInSet: [NSCharacterSet punctuationCharacterSet]]; 


  //for remove characters in punctuation category

si bien CharacterSet vérifier vous-même selon vos besoins

0voto

pckill Points 1463

Je suis venu avec cette fonction, qui, fondamentalement, se comporte de façon similaire à un dans la réponse d'Alex:

-(NSString*)trimLastSpace:(NSString*)str{
    int i = str.length - 1;
    for (; i >= 0 && [str characterAtIndex:i] == ' '; i--);
    return [str substringToIndex:i + 1];
}

whitespaceCharacterSet en plus de l'espace lui-même comprend également le caractère de tabulation, qui dans mon cas ne pouvait pas se manifester. Donc je suppose qu'une simple comparaison pourrait suffire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X