Я хочу мати знак відсотка в рядку після цифри. Щось подібне: 75%.
Як я можу це зробити? Я намагався:
[NSString stringWithFormat:@"%d\%", someDigit];
Але це не спрацювало для мене.
Я хочу мати знак відсотка в рядку після цифри. Щось подібне: 75%.
Як я можу це зробити? Я намагався:
[NSString stringWithFormat:@"%d\%", someDigit];
Але це не спрацювало для мене.
Відповіді:
Код відсотка у NSString
форматі входу є %%
. Це стосується NSLog()
і printf()
форматів.
NSLog
трактує свій перший аргумент як рядок формату, але ви вже відформатували рядок за допомогою stringWithFormat:
. Просто скажи NSLog(@"%@%%", self.Ptextfield.text)
.
Код евакуації для знаку відсотка - "%%", тож ваш код виглядатиме так
[NSString stringWithFormat:@"%d%%", someDigit];
Крім того, всі інші специфікатори формату можна знайти у статті Концептуальні рядки
Якщо це допомагає в деяких випадках, можна використовувати символ unicode:
NSLog(@"Test percentage \uFF05");
\uFF05
працює для мене, коли вона є частиною NSString
в UILocalNotification
, а не %%
. Дякую!
Прийнята відповідь не працює для UILocalNotification. Чомусь %%%%
(4-відсотковий знак) або символ Unicode ' \uFF05
' працюють лише для цього.
Отже, підкажіть, під час форматування рядка, який ви можете використовувати %%
. Однак якщо ваша рядок є частиною UILocalNotification, використовуйте %%%%
або \uFF05
.
Здається, якщо %%
дотримуватися "a" %@
, NSString
перейде до деяких дивних кодів, спробуйте це, і це працювало для мене
NSString *str = [NSString stringWithFormat:@"%@%@%@", @"%%",
[textfield text], @"%%"];
iOS 9.2.1, Xcode 7.2.1, включена ARC
Ви завжди можете додати '%' самостійно без будь-яких інших специфікаторів формату в рядку, який ви додаєте, як-от ...
int test = 10;
NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [stringTest stringByAppendingString:@"%"];
NSLog(@"%@", stringTest);
Для iOS7.0 +
Щоб розширити відповідь на інші символи, які можуть спричинити конфлікт, ви можете скористатися:
- (NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters
Виписаний крок за кроком виглядає так:
int test = 10;
NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [[stringTest stringByAppendingString:@"%"]
stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet alphanumericCharacterSet]];
stringTest = [stringTest stringByRemovingPercentEncoding];
NSLog(@"percent value of test: %@", stringTest);
Або коротка рука:
NSLog(@"percent value of test: %@", [[[[NSString stringWithFormat:@"%d", test]
stringByAppendingString:@"%"] stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet alphanumericCharacterSet]] stringByRemovingPercentEncoding]);
Дякуємо всім оригінальним учасникам. Сподіваюсь, це допомагає. Ура!