Как добавить знак процента в NSString

456

Я хочу, чтобы в моей строке был знак процента после цифры. Как то так: 75%.

Как я могу это сделать? Я старался:

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

Но это не сработало для меня.

Илья Суздальницкий
источник

Ответы:

943

Код для знака процента в NSStringформате %%. Это касается NSLog()и printf()форматов.

mouviciel
источник
Я пытаюсь NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); и вывод будет только uitextfield.text
Али
2
NSLogобрабатывает свой первый аргумент как строку формата, но вы уже отформатировали строку, используя stringWithFormat:. Просто скажи NSLog(@"%@%%", self.Ptextfield.text).
ограбить Майоффа
Это не работает для UILocalNotification. См. Stackoverflow.com/a/27971848/2446178 .
JRam13
139

Код перехода для знака процента - «%%», поэтому ваш код будет выглядеть так

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

Кроме того, все другие спецификаторы формата можно найти в статьях Conceptual Strings.

binarybob
источник
И причина, по которой \% не работает, заключается в том, что обратная косая черта является escape-символом для строковых литералов, поэтому ввод \% в исходном коде фактически создает строку, содержащую один процентный символ.
gnasher729
17

Если это помогает в некоторых случаях, можно использовать символ Unicode:

NSLog(@"Test percentage \uFF05");
Resh32
источник
\uFF05работает для меня , когда он является частью NSStringдюйма UILocalNotification, а не %%. Спасибо!
Скотт
4
Это «знак процента полной ширины» для использования с китайскими или японскими символами, очень сильно отличающийся от обычного символа процента.
gnasher729
7

Принятый ответ не работает для UILocalNotification. По какой-то причине %%%%(4-процентные знаки) или символ Unicode ' \uFF05' работают только для этого.

Напомним, что при форматировании вашей строки вы можете использовать %%. Однако, если ваша строка является частью UILocalNotification, используйте %%%%или \uFF05.

JRam13
источник
6

Кажется, если %%следовать с %@, то NSStringпойдет на некоторые странные коды, попробуйте это, и это сработало для меня

NSString *str = [NSString stringWithFormat:@"%@%@%@", @"%%", 
                 [textfield text], @"%%"]; 
user1483392
источник
4

UES следующий код.

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

будет выводить: % Bhupi%

Bhoopi
источник
0

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]);

Спасибо всем оригинальным авторам. Надеюсь это поможет. Ура!

Serge-к
источник