Como adicionar um sinal de porcentagem ao NSString


456

Quero ter um sinal de porcentagem na minha string após um dígito. Algo assim: 75%.

Como posso fazer isso? Eu tentei:

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

Mas não funcionou para mim.

Respostas:


943

O código para o NSStringformato de sinal de porcentagem é %%. Isso também é válido para NSLog()e printf()formatos.


Estou tentando o NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); ea saída é jsut o uitextfield.text
Ali

2
NSLogtrata seu primeiro argumento como uma sequência de formato, mas você já formatou a sequência usando stringWithFormat:. Apenas diga NSLog(@"%@%%", self.Ptextfield.text).
Rob mayoff

Isso não funciona para UILocalNotification. Consulte stackoverflow.com/a/27971848/2446178 .
JRam13

139

O código de escape para um sinal de porcentagem é "%%", portanto, seu código ficaria assim

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

Além disso, todos os outros especificadores de formato podem ser encontrados em Artigos sobre cadeias conceituais


E a razão pela qual \% não funciona é que a barra invertida é o caractere de escape para literais de seqüência de caracteres; portanto, digitar \% no código-fonte na verdade cria uma sequência contendo um único caractere de porcentagem.
gnasher729

17

Se isso ajudar em alguns casos, é possível usar o caractere unicode:

NSLog(@"Test percentage \uFF05");

\uFF05funciona para mim quando faz parte do NSStringin UILocalNotification, não %%. Obrigado!
Scott Scott

4
Esse é um "sinal de porcentagem de largura total" para uso com caracteres chineses ou japoneses, muito diferente de um caractere de porcentagem comum.
precisa saber é o seguinte

7

A resposta aceita não funciona para UILocalNotification. Por alguma razão, %%%%(sinais de 4%) ou o caractere unicode ' \uFF05' só funcionam para isso.

Então, para recapitular, ao formatar sua string, você pode usar %%. No entanto, se sua string fizer parte de uma UILocalNotification, use %%%%ou \uFF05.


6

parece que se %%seguido com um %@, o NSStringvai para alguns códigos estranhos tente isso e isso funcionou para mim

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

4

código a seguir.

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

produzirá: % Bhupi%


0

iOS 9.2.1, Xcode 7.2.1, ARC ativado

Você sempre pode anexar o '%' sozinho, sem outros especificadores de formato na string que está anexando, assim ...

int test = 10;

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

Para iOS7.0 +

Para expandir a resposta para outros caracteres que podem causar conflitos, você pode optar por usar:

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

Escrito passo a passo, fica assim:

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 mão curta:

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

Obrigado a todos os colaboradores originais. Espero que isto ajude. Felicidades!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.