ChatGPT解决这个技术问题 Extra ChatGPT

如何将百分号添加到 NSString

我想在我的字符串中有一个数字后的百分号。像这样:75%。

我怎样才能做到这一点?我试过了:

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

但这对我不起作用。


m
mouviciel

NSString 格式的百分号代码是 %%。对于 NSLog()printf() 格式也是如此。


我正在尝试 NSLog([NSString stringWithFormat:@"%@%%", self.Ptextfield.text ]);输出是 uitextfield.text
NSLog 将其第一个参数视为格式字符串,但您已经使用 stringWithFormat: 格式化了该字符串。只需说NSLog(@"%@%%", self.Ptextfield.text)
这不适用于 UILocalNotification。请参阅stackoverflow.com/a/27971848/2446178
这行得通,这是我的情况 powerLbl.text = [NSString stringWithFormat:@"Power: %d%%", power];
N
NANNAV

百分号的转义码是“%%”,所以你的代码看起来像这样

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

此外,所有其他格式说明符都可以在 Conceptual Strings Articles 中找到


\% 不起作用的原因是反斜杠是字符串文字的转义字符,因此在源代码中键入 \% 实际上会创建一个包含单个百分比字符的字符串。
R
Resh32

如果这在某些情况下有帮助,则可以使用 unicode 字符:

NSLog(@"Test percentage \uFF05");

当它是 UILocalNotification 中的 NSString 的一部分时,\uFF05 对我有用,而不是 %%。谢谢!
这是用于中文或日文字符的“全角百分号”,与普通的百分号字符有很大不同。
J
JRam13

接受的答案不适用于 UILocalNotification。出于某种原因,%%%%(4 个百分号)或 unicode 字符“\uFF05”仅适用于此。

回顾一下,在格式化字符串时,您可以使用 %%。但是,如果您的字符串是 UILocalNotification 的一部分,请使用 %%%%\uFF05


A
Alex Cio

似乎如果 %% 后跟 %@NSString 会转到一些奇怪的代码试试这个,这对我有用

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

A
Alex Cio

使用以下代码。

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

将输出:%Bhupi%


s
serge-k

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

感谢所有原始贡献者。希望这可以帮助。干杯!