Cómo agregar signo de porcentaje a NSString


456

Quiero tener un signo de porcentaje en mi cadena después de un dígito. Algo como esto: 75%.

¿Cómo puedo hacer esto? Lo intenté:

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

Pero no funcionó para mí.

Respuestas:


943

El código para el NSStringformato de inicio de sesión por ciento es %%. Esto también es cierto para NSLog()y los printf()formatos.


Estoy intentando NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); y la salida es jsut the uitextfield.text
Ali

2
NSLogtrata su primer argumento como una cadena de formato, pero ya ha formateado la cadena usando stringWithFormat:. Solo dilo NSLog(@"%@%%", self.Ptextfield.text).
rob mayoff

Esto no funciona para UILocalNotification. Ver stackoverflow.com/a/27971848/2446178 .
JRam13

139

El código de escape para un signo de porcentaje es "%%", por lo que su código se vería así

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

Además, todos los demás especificadores de formato se pueden encontrar en Artículos de cadenas conceptuales


Y la razón por la que \% no funciona es que la barra invertida es el carácter de escape para los literales de cadena, por lo que escribir \% en su código fuente en realidad crea una cadena que contiene un solo carácter de porcentaje.
gnasher729

17

Si eso ayuda en algunos casos, es posible usar el carácter unicode:

NSLog(@"Test percentage \uFF05");

\uFF05que funciona para mí cuando forma parte de la NSStringen UILocalNotification, no %%. ¡Gracias!
Scott

44
Es un "signo de porcentaje de ancho completo" para usar con caracteres chinos o japoneses, muy diferente de un carácter de porcentaje ordinario.
gnasher729

7

La respuesta aceptada no funciona para UILocalNotification. Por alguna razón, %%%%(signos de 4 por ciento) o el carácter unicode ' \uFF05' solo funcionan para esto.

Para recapitular, al formatear su cadena puede usar %%. Sin embargo, si su cadena es parte de una UILocalNotification, use %%%%o \uFF05.


6

parece que si se %%sigue con un %@, NSStringiré a algunos códigos extraños, prueba esto y esto funcionó para mí

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

4

Código siguiente portugués.

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

producirá: % Bhupi%


0

iOS 9.2.1, Xcode 7.2.1, ARC habilitado

Siempre puede agregar el '%' por sí mismo sin ningún otro especificador de formato en la cadena que está agregando, así ...

int test = 10;

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

Para iOS7.0 +

Para expandir la respuesta a otros caracteres que podrían causarle conflictos, puede optar por usar:

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

Escrito paso a paso se ve así:

int test = 10;

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

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

O mano corta:

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

Gracias a todos los colaboradores originales. Espero que esto ayude. ¡Salud!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.