วิธีเพิ่มเครื่องหมายเปอร์เซ็นต์ใน NSString


456

ฉันต้องการมีเครื่องหมายเปอร์เซ็นต์ในสายอักขระของฉันหลังจากตัวเลข บางสิ่งเช่นนี้: 75%

ฉันจะทำสิ่งนี้ได้อย่างไร ฉันเหนื่อย:

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

แต่มันไม่ได้ผลสำหรับฉัน

คำตอบ:


943

รหัสสำหรับเครื่องหมายเปอร์เซ็นต์ในรูปแบบNSString %%สิ่งนี้เป็นจริงสำหรับNSLog()และprintf()รูปแบบ


ฉันกำลังลอง NSLog ([NSString stringWithFormat: @ "% @ %%", self.Ptextfield.text]); และผลลัพธ์คือ jsut the uitextfield.text
Ali

2
NSLogถือว่าอาร์กิวเมนต์แรกที่เป็นรูปแบบของสตริง stringWithFormat:แต่คุณมีรูปแบบอยู่แล้วสตริงใช้ NSLog(@"%@%%", self.Ptextfield.text)เพียงแค่พูดว่า
rob mayoff

สิ่งนี้ใช้ไม่ได้กับ UILocalNotification ดูstackoverflow.com/a/27971848/2446178
JRam13

139

รหัสหลบหนีสำหรับเครื่องหมายเปอร์เซ็นต์คือ "%%" ดังนั้นโค้ดของคุณจะเป็นแบบนี้

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

นอกจากนี้ตัวระบุรูปแบบอื่น ๆ สามารถดูได้ที่Conceptual Strings Articles


และสาเหตุที่ \% ใช้งานไม่ได้นั่นคือแบ็กสแลชคืออักขระเลี่ยงสำหรับตัวอักษรสตริงดังนั้นการพิมพ์ \% ในซอร์สโค้ดของคุณจะสร้างสตริงที่มีอักขระเปอร์เซนต์เดียว
gnasher729

17

หากวิธีนี้ช่วยได้ในบางกรณีคุณสามารถใช้อักขระ Unicode ได้:

NSLog(@"Test percentage \uFF05");

\uFF05การทำงานสำหรับฉันเมื่อมันเป็นส่วนหนึ่งของNSStringในไม่UILocalNotification %%ขอบคุณ!
สกอตต์

4
นั่นคือ "เครื่องหมายเต็มความกว้างเปอร์เซ็นต์" สำหรับใช้กับตัวอักษรจีนหรือญี่ปุ่นซึ่งแตกต่างจากตัวอักษรเปอร์เซ็นปกติมาก
gnasher729

7

คำตอบที่ยอมรับใช้ไม่ได้กับ UILocalNotification ด้วยเหตุผลบางอย่าง%%%%(เครื่องหมาย 4 เปอร์เซ็นต์) หรืออักขระ Unicode ' \uFF05' ใช้ได้กับสิ่งนี้เท่านั้น

%%ดังนั้นเพื่อสรุปเมื่อจัดรูปแบบสายของคุณคุณอาจจะใช้ แต่ถ้าสายของคุณเป็นส่วนหนึ่งของ UILocalNotification ใช้หรือ%%%%\uFF05


6

ดูเหมือนว่าถ้า%%ตามด้วย%@, ความNSStringประสงค์จะไปที่รหัสแปลก ๆ ลองนี้และมันใช้ได้กับฉัน

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

4

รหัสต่อไปนี้

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

ขอขอบคุณผู้มีส่วนร่วมต้นฉบับทั้งหมด หวังว่านี่จะช่วยได้ ไชโย!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.