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.
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:
O código para o NSString
formato de sinal de porcentagem é %%
. Isso também é válido para NSLog()
e printf()
formatos.
NSLog
trata seu primeiro argumento como uma sequência de formato, mas você já formatou a sequência usando stringWithFormat:
. Apenas diga NSLog(@"%@%%", self.Ptextfield.text)
.
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
Se isso ajudar em alguns casos, é possível usar o caractere unicode:
NSLog(@"Test percentage \uFF05");
\uFF05
funciona para mim quando faz parte do NSString
in UILocalNotification
, não %%
. Obrigado!
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
.
parece que se %%
seguido com um %@
, o NSString
vai para alguns códigos estranhos tente isso e isso funcionou para mim
NSString *str = [NSString stringWithFormat:@"%@%@%@", @"%%",
[textfield text], @"%%"];
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!