11
votes

Comment rembourrer Nstring avec des espaces?

Par exemple, j'ai besoin que la nstring ait au moins 8 caractères ... au lieu d'utiliser une boucle pour ajouter les espaces de tampon de gauche à ce sujet, est là pour le faire? XXX


1 commentaires

4 Réponses :


18
votes

Voici un exemple de la façon dont vous pouvez le faire:

int main (int argc, const char * argv[]) {
    NSString *str = @"Hello";
    int add = 8-[str length];
    if (add > 0) {
        NSString *pad = [[NSString string] stringByPaddingToLength:add withString:@" " startingAtIndex:0];
        str = [pad stringByAppendingString:str];
    }
    NSLog(@"'%@'", str);
    return 0;
}


4 commentaires

Pourquoi voudriez-vous le faire de cette façon? Ceci est déjà ce que stringbypaddingtolength: ARRESSHING: COMMENDATIDEX: fait. Vous pouvez simplement vous débarrasser de tout après la déclaration de STR et plutôt faire nslog (@ "% @", [Str Stringbypaddingtolength: ajoutez avec le tronçon: @ "" DébutAdIdex: 0])


@Chuck Oui, c'était mon idée initiale. Malheureusement, ma compréhension est que la méthode de rembourrage ne pose que sur la droite, écrasant les caractères de l'index sur. En d'autres termes, si vous avez commencé à zéro, vous obtiendrez une chaîne de huit espaces.


Ah, tu as raison, je n'ai clairement pas lu la question correctement. Ne me garde jamais.


@dasblinkenlight Je pensais initialement la même chose à propos de l'index. Mais en fait, départtatindex est destiné à celui de la chaîne de rembourrage, le rembourrage commence. Voir [Référence de la classe Nsstring]. ( développeur.apple.com/library/mac/#documentation/c ocoa / référence / ... )



8
votes

Je fais juste quelque chose comme ceci: xxx

de plus, 14 est la largeur que vous voulez.


2 commentaires

Ceci est cassé, ce que le diable signifie-t-il même?


C'est bien si la longueur est moulée sur INT et la thestring est plus courte que 14.



-2
votes

Si vous avez besoin de la même réponse dans une méthode, je devais créer un à utiliser dans mes projets. code d'origine par dashblinklight xxx


1 commentaires

- (Nsstring *) StringByPaddingTolength: (NSSInteger) NewLength ARRESSHING: (NSTRING *) PADSTRING DE COMMDTAINDEX: (NSUITEGER) PADIDEX;



0
votes

Vous pouvez utiliser le formatage de langage C Printf avec - [nsmutableString appendormat:] code> et tous les autres Nstring code> "format". Cela ne respecte pas Nstring (formatage sur % @ code>), vous devez donc les convertir en ASCII.

Rembourrage de chaîne en C P>

- (NSString *)sample {
    NSArray<NSString *> *input = @[@"Hello", @"Bye", @"Very Long", @"abc"];
    NSMutableString *output = [[NSMutableString alloc] init];
    for (NSString *string in input) {
        [output appendFormat:@"%8s\n", string.UTF8String];
    }
    return output;
}

/*
Return value:
   Hello
     Bye
Very Long
     abc
*/


0 commentaires