Come aggiungere il segno di percentuale a NSString


456

Voglio avere un segno di percentuale nella mia stringa dopo una cifra. Qualcosa del genere: 75%.

Come posso farlo? Provai:

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

Ma non ha funzionato per me.

Risposte:


943

Il codice per il NSStringformato di accesso percentuale è %%. Questo vale anche per NSLog()e printf()formati.


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

2
NSLogconsidera il suo primo argomento come una stringa di formato, ma hai già formattato la stringa usando stringWithFormat:. Basta dire NSLog(@"%@%%", self.Ptextfield.text).
Rob Mayoff,

Questo non funziona con UILocalNotification. Vedi stackoverflow.com/a/27971848/2446178 .
JRam13,

139

Il codice di escape per un segno di percentuale è "%%", quindi il tuo codice sarebbe simile a questo

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

Inoltre, tutti gli altri identificatori di formato sono disponibili negli articoli sulle stringhe concettuali


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

17

Se ciò aiuta in alcuni casi, è possibile utilizzare il carattere unicode:

NSLog(@"Test percentage \uFF05");

\uFF05funziona per me quando fa parte di NSStringin UILocalNotification, no %%. Grazie!
Scott,

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

7

La risposta accettata non funziona per UILocalNotification. Per qualche motivo, %%%%(segni del 4 per cento) o il carattere unicode ' \uFF05' funzionano solo per questo.

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


6

sembra che se %%seguito da un %@, NSStringandranno ad alcuni strani codici provare questo e questo ha funzionato per me

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

4

questo è il seguente codice.

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

produrrà: % Bhupi%


0

iOS 9.2.1, Xcode 7.2.1, ARC abilitato

Puoi sempre aggiungere '%' da solo senza altri specificatori di formato nella stringa che stai 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 conflitti, puoi scegliere di utilizzare:

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

Scritto passo dopo passo sembra 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 mano corta:

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

Grazie a tutti i collaboratori originali. Spero che sia di aiuto. Saluti!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.