Як додати знак відсотка до NSString


Відповіді:


943

Код відсотка у NSStringформаті входу є %%. Це стосується NSLog()і printf()форматів.


Я намагаюся NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); а вихід jsut uitextfield.text
Алі

2
NSLogтрактує свій перший аргумент як рядок формату, але ви вже відформатували рядок за допомогою stringWithFormat:. Просто скажи NSLog(@"%@%%", self.Ptextfield.text).
пограбувати майоп

Це не працює для UILocalNotification. Дивіться stackoverflow.com/a/27971848/2446178 .
JRam13

139

Код евакуації для знаку відсотка - "%%", тож ваш код виглядатиме так

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

Крім того, всі інші специфікатори формату можна знайти у статті Концептуальні рядки


І причина, по якій \% не працює, полягає в тому, що зворотна косою рисою є символом виходу для рядкових літералів, тому введення \% у вихідному коді фактично створює рядок, що містить один відсотковий символ.
gnasher729

17

Якщо це допомагає в деяких випадках, можна використовувати символ unicode:

NSLog(@"Test percentage \uFF05");

\uFF05працює для мене, коли вона є частиною NSStringв UILocalNotification, а не %%. Дякую!
Скотт

4
Це "знак відсотка повної ширини" для використання з китайськими або японськими символами, дуже сильно відрізняється від звичайного символу відсотків.
gnasher729

7

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

Отже, підкажіть, під час форматування рядка, який ви можете використовувати %%. Однак якщо ваша рядок є частиною UILocalNotification, використовуйте %%%%або \uFF05.


6

Здається, якщо %%дотримуватися "a" %@, NSStringперейде до деяких дивних кодів, спробуйте це, і це працювало для мене

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

4

наступний код uese.

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

виведе: % Bhupi%


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

Дякуємо всім оригінальним учасникам. Сподіваюсь, це допомагає. Ура!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.