2009-04-11 13 views

Respuesta

879

El código para el signo de porcentaje en el formato NSString es %%. Esto también es válido para los formatos NSLog() y printf().

+0

Estoy probando NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); y el resultado es jsut el uitextfield.text – Ali

+2

'NSLog' trata su primer argumento como una cadena de formato, pero ya ha formateado la cadena usando' stringWithFormat: '. Simplemente diga 'NSLog (@"% @ %% ", self.Ptextfield.text)'. –

+0

Esto no funciona para UILocalNotification. Ver http://stackoverflow.com/a/27971848/2446178. –

128

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

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

Además, todos los otros especificadores de formato se pueden encontrar en Conceptual Strings Articles

+0

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

17

Si eso ayuda en algunos casos, es posible utilizar el carácter Unicode:

NSLog(@"Test percentage \uFF05"); 
+0

'\ uFF05' funciona para mí cuando forma parte de' NSString' en 'UILocalNotification', no' %% '. ¡Gracias! – Scott

+3

Eso 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

3

uese following code.

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

seria: % Bhupi%

5

parece si %% siguió con un %@, la NSString irá a algunos códigos extraños probar esto y esto funcionó para mí

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

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

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

0

iOS 9.2.1, 7.2.1, Xcode ARC activado

Siempre se puede añadir el '%' por sí mismo, sin ningún otro especificadores de formato en la cadena que está anexando, al igual que ...

int test = 10; 

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

para iOS7.0 +

para ampliar la respuesta a otros personajes que podrían causar que entren en conflicto puede optar por utilizar:

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

Escrito cabo paso a paso que tiene este aspecto:

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 corta la mano:

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

Gracias a todos los contribuyentes originales. Espero que esto ayude. ¡Aclamaciones!

Cuestiones relacionadas