Cách thêm phần trăm ký vào NSString


456

Tôi muốn có một dấu phần trăm trong chuỗi của tôi sau một chữ số. Một cái gì đó như thế này: 75%.

Làm thế nào tôi có thể làm điều này? Tôi đã thử:

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

Nhưng nó không làm việc cho tôi.

Câu trả lời:


943

Mã cho NSStringđịnh dạng phần trăm đăng nhập là %%. Điều này cũng đúng cho NSLog()printf()định dạng.


Tôi đang thử NSLog ([NSString chuỗiWithFormat: @ "% @ %%", self.Ptextfield.text]); và đầu ra là jsut uitextfield.text
Ali

2
NSLogcoi đối số đầu tiên của nó là một chuỗi định dạng, nhưng bạn đã định dạng chuỗi bằng cách sử dụng stringWithFormat:. Chỉ cần nói NSLog(@"%@%%", self.Ptextfield.text).
cướp mayoff

Điều này không hoạt động cho UILocalNotification. Xem stackoverflow.com/a/27971848/2446178 .
JRam13

139

Mã thoát cho dấu phần trăm là "%%", vì vậy mã của bạn sẽ trông như thế này

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

Ngoài ra, tất cả các công cụ định dạng định dạng khác có thể được tìm thấy tại Bài viết về chuỗi khái niệm


Và lý do tại sao \% không hoạt động là dấu gạch chéo ngược là ký tự thoát cho chuỗi ký tự, vì vậy, nhập \% trong mã nguồn của bạn thực sự tạo ra một chuỗi chứa một ký tự phần trăm.
gnasher729

17

Nếu điều đó có ích trong một số trường hợp, có thể sử dụng ký tự unicode:

NSLog(@"Test percentage \uFF05");

\uFF05làm việc cho tôi khi nó là một phần của NSStringtrong UILocalNotification, không %%. Cảm ơn!
Scott

4
Đó là "dấu hiệu phần trăm chiều rộng đầy đủ" để sử dụng với các ký tự tiếng Trung hoặc tiếng Nhật, rất khác với ký tự phần trăm thông thường.
gnasher729

7

Câu trả lời được chấp nhận không hoạt động đối với UILocalNotification. Vì một số lý do, %%%%(4 dấu hiệu phần trăm) hoặc ký tự unicode ' \uFF05' chỉ hoạt động cho việc này.

Vì vậy, để tóm tắt lại, khi định dạng chuỗi của bạn, bạn có thể sử dụng %%. Tuy nhiên, nếu chuỗi của bạn là một phần của UILocalNotification, hãy sử dụng %%%%hoặc \uFF05.


6

Dường như nếu %%theo sau với một %@, NSStringsẽ đi đến một số mã lạ thử điều này và điều này làm việc cho tôi

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

4

uese mã sau.

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

sẽ xuất: % Bhupi%


0

iOS 9.2.1, Xcode 7.2.1, bật ARC

Bạn luôn có thể tự thêm '%' mà không cần bất kỳ trình xác định định dạng nào khác trong chuỗi bạn đang nối, như vậy ...

int test = 10;

NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [stringTest stringByAppendingString:@"%"];
NSLog(@"%@", stringTest);

Dành cho iOS7.0 +

Để mở rộng câu trả lời cho các nhân vật khác có thể khiến bạn xung đột, bạn có thể chọn sử dụng:

- (NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters

Viết ra từng bước nó trông như thế này:

int test = 10;

NSString *stringTest = [NSString stringWithFormat:@"%d", test];
stringTest = [[stringTest stringByAppendingString:@"%"] 
             stringByAddingPercentEncodingWithAllowedCharacters:
             [NSCharacterSet alphanumericCharacterSet]];
stringTest = [stringTest stringByRemovingPercentEncoding];

NSLog(@"percent value of test: %@", stringTest);

Hoặc tay ngắn:

NSLog(@"percent value of test: %@", [[[[NSString stringWithFormat:@"%d", test] 
stringByAppendingString:@"%"] stringByAddingPercentEncodingWithAllowedCharacters:
[NSCharacterSet alphanumericCharacterSet]] stringByRemovingPercentEncoding]);

Cảm ơn tất cả những người đóng góp ban đầu. Hi vọng điêu nay co ich. Chúc mừng!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.