Como adicionar sinal de porcentagem ao NSString

Eu quero ter um sinal de porcentagem na minha string depois de um dígito. Algo como isto: 75%.

Como posso fazer isso? Eu tentei:

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

Mas não funcionou para mim.

O código para o sinal de porcentagem no formato NSString é %% . Isso também é verdadeiro para os formatos NSLog() e printf() .

O código de escape para um sinal de porcentagem é “%%”, então seu código ficaria assim

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

Além disso, todos os outros especificadores de formato podem ser encontrados em Artigos de Strings Conceituais

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

 NSLog(@"Test percentage \uFF05"); 

A resposta aceita não funciona para UILocalNotification. Por algum motivo, %%%% (sinais de 4 por cento) 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 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], @"%%"]; 

Uese seguinte código.

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

irá produzir: % Bhupi%

iOS 9.2.1, Xcode 7.2.1, ARC ativado

Você sempre pode append o ‘%’ sozinho sem outros especificadores de formato na string que você está anexando, assim …

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

Para iOS7.0 +

Para expandir a resposta a outros personagens que possam causar conflitos, você pode optar por usar:

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

Escrito passo a passo, parece com isso:

 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 contribuidores originais. Espero que isto ajude. Felicidades!