Jak dodać znak procentu do NSString

456

Chcę mieć znak procentu w moim ciągu po cyfrze. Coś w tym stylu: 75%.

Jak mogę to zrobić? Próbowałem:

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

Ale to nie działało dla mnie.

Ilya Suzdalnitski
źródło

Odpowiedzi:

943

Kod NSStringformatu procentowego logowania to %%. Odnosi się to również do NSLog()i printf()formatów.

mouviciel
źródło
Próbuję NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); a wynikiem jest jsut uitextfield.text
Ali
2
NSLogtraktuje swój pierwszy argument jako ciąg formatu, ale ciąg został już sformatowany przy użyciu stringWithFormat:. Po prostu powiedz NSLog(@"%@%%", self.Ptextfield.text).
rob mayoff
To nie działa dla UILocalNotification. Zobacz stackoverflow.com/a/27971848/2446178 .
JRam13,
139

Kodem ucieczki dla znaku procentu jest „%%”, więc twój kod wyglądałby tak

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

Ponadto wszystkie inne specyfikatory formatu można znaleźć w artykułach o ciągach koncepcyjnych

binarybob
źródło
Powodem, dla którego \% nie działa, jest to, że ukośnik odwrotny jest znakiem ucieczki literałów łańcuchowych, więc wpisanie \% w kodzie źródłowym faktycznie tworzy ciąg zawierający pojedynczy znak procentu.
gnasher729
17

Jeśli to pomaga w niektórych przypadkach, można użyć znaku Unicode:

NSLog(@"Test percentage \uFF05");
Resh32
źródło
\uFF05działa na mnie, gdy jest częścią NSStringIN UILocalNotification, nie %%. Dzięki!
Scott
4
Jest to „znak procentu pełnej szerokości” do użytku ze znakami chińskimi lub japońskimi, bardzo różniący się od zwykłego znaku procentu.
gnasher729
7

Akceptowana odpowiedź nie działa dla UILocalNotification. Z jakiegoś powodu %%%%(znaki 4 procent) lub znak Unicode ”\uFF05 działają tylko w tym celu.

Podsumowując, podczas formatowania łańcucha możesz użyć %%. Jeśli jednak łańcuch jest częścią UILocalNotification, użyj %%%%lub \uFF05.

JRam13
źródło
6

wygląda na to, że jeśli %%nastąpi po nim %@, NSStringprzejdę do niektórych dziwnych kodów, spróbuj tego i to zadziałało dla mnie

NSString *str = [NSString stringWithFormat:@"%@%@%@", @"%%", 
                 [textfield text], @"%%"]; 
użytkownik1483392
źródło
4

Poniższy kod.

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

wyświetli: % Bhupi%

Bhoopi
źródło
0

iOS 9.2.1, Xcode 7.2.1, obsługa ARC

Zawsze możesz dołączyć „%” samodzielnie, bez żadnych innych specyfikatorów formatu w dołączanym ciągu, na przykład…

int test = 10;

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

Dla iOS 7.0 +

Aby rozszerzyć odpowiedź na inne znaki, które mogą powodować konflikt, możesz użyć:

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

Zapisany krok po kroku wygląda następująco:

int test = 10;

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

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

Lub krótka ręka:

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

Dzięki wszystkim oryginalnym współpracownikom. Mam nadzieję że to pomoże. Twoje zdrowie!

serge-k
źródło