SORU
1 HAZİRAN 2010, Salı


Nasıl belirli bir uzunluğa bir NSString kesecek miyim?

Aradım, ama şaşırtıcı bir cevap bulamadım.

Kısaltmak istiyorum uzun NSString var. Uzunluğu en fazla 20 karakter etrafında olmak istiyorum. En iyi çözüm substringWithRange kullanmak için olduğunu okumuştum. Bu en iyi yolu bir dize kesecek mi?

NSRange stringRange = {0,20};
NSString *myString = @"This is a string, it's a very long string, it's a very long string indeed";
NSString *shortString = [myString substringWithRange:stringRange];

(Dize çöker en fazla uzunluktan daha kısa ise) biraz hassas gibi görünüyor. Ayrıca eğer Unicode güvenli mi, emin değilim. Daha iyi bir yol var mı? Bu herkes için güzel bir kategori var mı?

CEVAP
1 HAZİRAN 2010, Salı


Aslında "güvenli birçok karakter önerilen cevaplar düşünmüyoruz. unicode birleştirmek" olarak ölmüştü, Unicode olma kısmı

Eğer istiyorsanız örneğin, ben. Yazarak bunu yapmanın bir yolu, "e"(0x65) aksan birleştirerek" "(0x301). Yazarsanız şimdi, "" bu ve kesilme 4 karakter gibi, alacaksın "". cafe kafe Bu, bazı yerlerde sorunlara neden olabilir.

Eğer bu senin umrunda bile, diğer cevaplar çok iyi çalışıyor. Yoksa bunu yap:

// define the range you're interested in
NSRange stringRange = {0, MIN([myString length], 20)};

// adjust the range to include dependent chars
stringRange = [myString rangeOfComposedCharacterSequencesForRange:stringRange];

// Now you can create the short string
NSString *shortString = [myString substringWithRange:stringRange];

Bu şekilde dizi ilk dizi uzunluğundan daha uzun olabilir unutmayın. Kafe yukarıdaki örnekte, aralığı hala 4 olsa bile 5, uzunluğu genişleyecektir"". semboller Eğer kesinlikle bir uzunluk daha az gösterilen daha ne olması gerekiyorsa, bunun için kontrol etmeniz gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Makeup Lover

    Makeup Lover

    12 HAZİRAN 2011
  • Ryan Billy

    Ryan Billy

    30 EKİM 2006
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009