bagaimana cara mendapatkan tiga karakter pertama dari NSString?

104

Bagaimana cara mengembalikan tiga karakter pertama dari NSString?

cgossain.dll
sumber

Jawaban:

263
 mystr=[mystr substringToIndex:3];

Pastikan string Anda memiliki minimal 3 ch .. oe itu akan merusak aplikasi.

Berikut beberapa tautan lain untuk memeriksa operasi NSsting ...

Tautan1

Tautan2

Tautan Apple

GameLoading
sumber
21
catatan: Kesalahan "Rentang atau indeks di luar batas" mungkin terjadi jika Anda tidak memeriksa panjangnya untuk memastikan panjangnya 3 karakter atau lebih
Ryan Bavetta
Saya sangat baru dan saya mencari pertanyaan ini untuk mencoba menjawab pertanyaan saya sendiri, tetapi bukankah jawaban ini akan menghilangkan 3 karakter pertama? Saya menggunakan sintaks yang sama untuk MENGHAPUS jumlah karakter yang Anda tetapkan. Saya mungkin salah, tapi saya pikir setidaknya saya harus bertanya.
@RyanBavetta Bagaimana jika string yang Anda lakukan ini adalah misalnya string tanggal yang kode Anda buat sebelumnya sehingga Anda tahu PERSIS berapa banyak karakter yang dimilikinya. Maka tentunya Anda tidak perlu repot dengan if statement untuk mengecek berapa panjangnya kan ??
Supertecnoboff
1
@GameLoading Saya telah menambahkan beberapa kode ke jawaban Anda sehingga tidak macet untuk pemula. Harap Anda tidak keberatan :)
iYoung
Cukup gunakan mystr = [mystr substringToIndex: MIN (mystr.length, 3)] untuk menghindari crash :-)
LaborEtArs
62

Pertama, Anda harus memastikan bahwa string berisi setidaknya 3 karakter:

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

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

substringToIndex: akan memunculkan pengecualian jika indeks yang Anda berikan melebihi akhir string.

dreamlax
sumber
5
Atau, bungkus dengan blok @ try / @ catch. Meskipun demikian, ini adalah jawaban yang lebih baik dari yang lain.
Alan Zeino
2

cara yang benar adalah:

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

substringToIndex dari NSString mengindeks berdasarkan unit kode, emoji mengambil dua unit kode.

pastikan periksa sendiri indeksnya.

puncak
sumber