จะรับอักขระสามตัวแรกของ NSString ได้อย่างไร?


คำตอบ:


263
 mystr=[mystr substringToIndex:3];

ตรวจสอบให้แน่ใจว่าสตริงของคุณมีอย่างน้อย 3 ch .. oe จะทำให้แอปหยุดทำงาน

นี่คือลิงค์อื่น ๆ เพื่อตรวจสอบการทำงานของ NSsting ...

ลิงค์ 1

ลิงค์ 2

ลิงค์ Apple


21
หมายเหตุ: อาจเกิดข้อผิดพลาด "ช่วงหรือดัชนีนอกขอบเขต" หากคุณไม่ตรวจสอบความยาวเพื่อให้แน่ใจว่ามีความยาว 3 อักขระขึ้นไป
Ryan Bavetta

ฉันใหม่มากและฉันค้นหาคำถามนี้เพื่อพยายามตอบคำถามของตัวเอง แต่คำตอบนี้จะไม่ใช้อักขระ 3 ตัวแรกหรือไม่? ฉันใช้ไวยากรณ์เดียวกันเพื่อลบจำนวนอักขระที่คุณตั้งไว้ ฉันอาจจะผิด แต่คิดว่าอย่างน้อยฉันควรถาม

@RyanBavetta จะเกิดอะไรขึ้นถ้าสตริงที่คุณทำเช่นนี้เป็นสตริงวันที่ซึ่งรหัสของคุณสร้างไว้ก่อนหน้านี้และเพื่อให้คุณทราบว่ามีอักขระจำนวนเท่าใด ถ้าอย่างนั้นคุณไม่จำเป็นต้องกังวลกับคำสั่ง if เพื่อตรวจสอบว่ามันยาวแค่ไหนใช่ไหม ??
Supertecnoboff

1
@GameLoading ฉันได้เพิ่มโค้ดให้กับคำตอบของคุณเพื่อที่จะได้ไม่ผิดพลาดสำหรับผู้เริ่มต้น หวังว่าคุณจะไม่รังเกียจ :)
iYoung

เพียงใช้ mystr = [mystr substringToIndex: MIN (mystr.length, 3)] เพื่อหลีกเลี่ยงข้อขัดข้อง :-)
LaborEtArs

62

ขั้นแรกคุณต้องตรวจสอบให้แน่ใจว่าสตริงมีอย่างน้อย 3 อักขระ:

NSString *fullString = /* obtain from somewhere */;
NSString *prefix = nil;

if ([fullString length] >= 3)
    prefix = [fullString substringToIndex:3];
else
    prefix = fullString;

substringToIndex: จะทำให้เกิดข้อยกเว้นหากดัชนีที่คุณระบุอยู่เกินส่วนท้ายของสตริง


5
หรือห่อบล็อก @ try / @ catch อย่างไรก็ตามนี่เป็นคำตอบที่ดีกว่าคำตอบอื่น ๆ
Alan Zeino

2

วิธีที่ถูกต้องคือ:

text = [text substringToIndex:NSMaxRange([text rangeOfComposedCharacterSequenceAtIndex:2])];

substringToIndex ของ NSString กำลังจัดทำดัชนีตามหน่วยรหัสอีโมจิใช้หน่วยรหัสสองหน่วย

ตรวจสอบดัชนีด้วยตัวคุณเอง

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