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.
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.
Odpowiedzi:
Kod NSString
formatu procentowego logowania to %%
. Odnosi się to również do NSLog()
i printf()
formatów.
NSLog
traktuje 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)
.
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
Jeśli to pomaga w niektórych przypadkach, można użyć znaku Unicode:
NSLog(@"Test percentage \uFF05");
\uFF05
działa na mnie, gdy jest częścią NSString
IN UILocalNotification
, nie %%
. Dzięki!
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
.
wygląda na to, że jeśli %%
nastąpi po nim %@
, NSString
przejdę do niektórych dziwnych kodów, spróbuj tego i to zadziałało dla mnie
NSString *str = [NSString stringWithFormat:@"%@%@%@", @"%%",
[textfield text], @"%%"];
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!