web-dev-qa-db-fra.com

Comment ajouter un signe de pourcentage à NSString

Je veux avoir un signe de pourcentage dans ma chaîne après un chiffre. Quelque chose comme ça: 75%.

Comment puis-je avoir cela fait? J'ai essayé:

[NSString stringWithFormat:@"%d\%", someDigit];

Mais cela n'a pas fonctionné pour moi.

451
Ilya Suzdalnitski

Le code du pourcentage de connexion au format NSString est %%. Ceci est également vrai pour les formats NSLog() et printf().

932
mouviciel

Le code d'échappement du signe de pourcentage est "%%", votre code devrait alors ressembler à ceci

[NSString stringWithFormat:@"%d%%", someDigit];

En outre, tous les autres spécificateurs de format peuvent être trouvés à Articles conceptuels de chaînes

137
binarybob

Si cela peut aider dans certains cas, il est possible d'utiliser le caractère unicode:

NSLog(@"Test percentage \uFF05");
18
Resh32

La réponse acceptée ne fonctionne pas pour UILocalNotification. Pour une raison quelconque, %%%% (4 signes de pourcentage) ou le caractère unicode '\uFF05' ne fonctionne que pour cela.

Donc pour récapituler, vous pouvez utiliser %% lors du formatage de votre chaîne. Toutefois, si votre chaîne fait partie d'une UILocalNotification, utilisez %%%% ou \uFF05.

7
Jonny Ramos

semble si %% suivi d'un %@, le NSString ira à des codes étranges essayer ceci et cela a fonctionné pour moi

NSString *str = [NSString stringWithFormat:@"%@%@%@", @"%%", 
                 [textfield text], @"%%"]; 
6
user1483392

code suivant.

 NSString *searchText = @"Bhupi"
 NSString *formatedSearchText = [NSString stringWithFormat:@"%%%@%%",searchText];

affichera: % Bhupi%

4
Bhoopi

iOS 9.2.1, Xcode 7.2.1, ARC activé

Vous pouvez toujours ajouter le '%' lui-même sans autres spécificateurs de format dans la chaîne que vous ajoutez, comme si ...

int test = 10;

NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [stringTest stringByAppendingString:@"%"];
NSLog(@"%@", stringTest);

Pour iOS7.0 +

Pour étendre la réponse à d’autres personnages qui pourraient vous causer des conflits, vous pouvez choisir d’utiliser:

- (NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters

Ecrit étape par étape, il se présente comme suit:

int test = 10;

NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [[stringTest stringByAppendingString:@"%"] 
             stringByAddingPercentEncodingWithAllowedCharacters:
             [NSCharacterSet alphanumericCharacterSet]];
stringTest = [stringTest stringByRemovingPercentEncoding];

NSLog(@"percent value of test: %@", stringTest);

Ou main courte:

NSLog(@"percent value of test: %@", [[[[NSString stringWithFormat:@"%d", test] 
stringByAppendingString:@"%"] stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet alphanumericCharacterSet]] stringByRemovingPercentEncoding]);

Merci à tous les contributeurs originaux. J'espère que cela t'aides. À votre santé!

0
serge-k