2009-04-11 13 views

risposta

879

Il codice per il segno di percentuale nel formato NSString è %%. Questo vale anche per i formati NSLog() e printf().

+0

Sto provando NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); e l'output è jsut theuitextfield.text – Ali

+2

'NSLog' tratta il suo primo argomento come una stringa di formato, ma hai già formattato la stringa usando' stringWithFormat: '. Dì solo "NSLog (@"% @ %% ", self.Ptextfield.text)'. –

+0

Questo non funziona per UILocalNotification. Vedi http://stackoverflow.com/a/27971848/2446178. –

128

Il codice di escape per un segno di percentuale è "%%", in modo che il codice sarebbe simile a questa

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

Inoltre, tutti gli altri identificatori di formato possono essere trovati a Conceptual Strings Articles

+0

E il motivo per cui \% non funziona è che il backslash è il carattere di escape per i letterali stringa, quindi digitando \% nel codice sorgente crea effettivamente una stringa contenente un singolo carattere percentuale. – gnasher729

17

se questo aiuta in alcuni casi, è possibile utilizzare il carattere unicode:

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

'\ uFF05' funziona per me quando fa parte di' NSString' in 'UILocalNotification', non' %% '. Grazie! – Scott

+3

Questo è un "segno di percentuale a larghezza intera" per l'utilizzo con caratteri cinesi o giapponesi, molto diverso da un carattere percentuale normale. – gnasher729

3

seguente codice.

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

volontà di uscita: % Bhupi%

5

sembra se %% seguito con un %@, il NSString andrà ad alcuni codici strani provare questo e questo ha funzionato per me

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

La risposta accettata non funziona con UILocalNotification. Per qualche motivo, %%%% (4 punti percentuali) o il carattere Unicode '\uFF05' funziona solo per questo.

Quindi per ricapitolare, durante la formattazione della stringa è possibile utilizzare %%. Tuttavia, se la stringa è parte di una UILocalNotification, utilizzare %%%% o \uFF05.

0

iOS 9.2.1, Xcode 7.2.1, ARC abilitato

È sempre possibile aggiungere il '%' da solo, senza altri identificatori di formato nella stringa che si sta aggiungendo, in questo modo ...

int test = 10; 

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

per iOS7.0 +

per espandere la risposta ad altri personaggi che potrebbero causare dei conflitti si può scegliere di utilizzare:

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

Scritto passo dopo passo, che appare così:

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 corto mano:

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

Grazie a tutti i collaboratori originali. Spero che questo ti aiuti. Saluti!

Problemi correlati