NSString'in ilk üç karakteri nasıl elde edilir?


Yanıtlar:


263
 mystr=[mystr substringToIndex:3];

Dizinizin en az 3 kanala sahip olduğundan emin olun .. oe bu, uygulamayı çökertecektir.

NSsting işlemlerini kontrol etmek için diğer bazı bağlantılar ...

Bağlantı1

Bağlantı2

Apple Bağlantısı


21
not: "Aralık veya dizin sınırların dışında" hatası, 3 veya daha fazla karakter uzunluğunda olduğundan emin olmak için uzunluğu kontrol etmezseniz mümkündür
Ryan Bavetta

Çok yeniyim ve bu soruyu kendi soruyu yanıtlamak için aradım, ancak bu cevap ilk 3 karakteri çıkarmayacak mı? Ayarladığınız karakter sayısını KALDIRMAK için aynı sözdizimini kullanıyorum. Muhtemelen yanılıyorum, ama en azından sormam gerektiğini düşündüm.

@RyanBavetta Ya bunu yaptığınız dizge, örneğin kodunuzun daha önce oluşturduğu bir tarih dizesiyse ve böylece tam olarak kaç karaktere sahip olduğunu bilirsiniz. O halde ne kadar uzun olduğunu kontrol etmek için bir if ifadesiyle uğraşmanıza gerek yok, değil mi?
Supertecnoboff

1
@GameLoading Cevabınıza yeni başlayanlar için çökmemesi için bazı kodlar ekledim. Umarım aldırmazsınız :)
iYoung

Çökmeleri önlemek için sadece mystr = [mystr substringToIndex: MIN (mystr.length, 3)] kullanın :-)
LaborEtArs

62

Öncelikle, dizenin en az 3 karakter içerdiğinden emin olmalısınız:

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

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

substringToIndex: Sağladığınız dizin dizenin sonunun dışındaysa bir istisna atar.


5
Veya bir @ try / @ catch bloğuna sarın. Yine de bu diğerinden daha iyi bir cevap.
Alan Zeino

2

doğru yol:

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

substringToIndex of NSString kod birimi ile indeksleniyor, emoji iki kod birimi alıyor.

dizini kendiniz kontrol ettiğinizden emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.