SORU
4 HAZİRAN 2014, ÇARŞAMBA


Nasıl Dize kullanıyorsunuz.substringWithRange? (ya da, nasıl Aralıkları Hızlı mı?)

Henüz Swift: bir dize bir dize almak için nasıl anlamaya mümkün olmamıştır

var str = “Hello, playground”
func test(str: String) -> String {
 return str.substringWithRange( /* What goes here? */ )
}
test (str)

Swift bir Dizi oluşturmak için güçlü değilim. Oyun alanında otomatik tamamlama süper yararlı - bu o anlama geliyor zaten değil mi:

return str.substringWithRange(aRange: Range<String.Index>)

Yardımcı olan Swıft Standart Referans kütüphanesinde bir şey bulamadım. Burada başka bir tahmin:

return str.substringWithRange(Range(0, 1))

Ve bu:

let r:Range<String.Index> = Range<String.Index>(start: 0, end: 2)
return str.substringWithRange(r)

Gördüm diğer cevaplar (Finding index of character in Swift String) gibi görünen önermek beri String köprü tipi NSString "eski" yöntemleri işe yarayabilir, ama bunu daha açık nasıl - örneğin, bu çalışmıyor ya da (gibi görünmüyor geçerli sözdizimi):

let x = str.substringWithRange(NSMakeRange(0, 3))

Düşünceler?

CEVAP
4 HAZİRAN 2014, ÇARŞAMBA


SubstringWithRange yöntemi kullanabilirsiniz. Bu bir başlangıç alır ve Dize sonu.Dizin.

var str = "Hello, playground"
str.substringWithRange(Range<String.Index>(start: str.startIndex, end: str.endIndex)) //"Hello, playground"

Başlangıç değiştirmek ve dizin bitirmek için advancedBy(n) kullanın.

var str = "Hello, playground"
str.substringWithRange(Range<String.Index>(start: str.startIndex.advancedBy(2), end: str.endIndex.advancedBy(-1))) //"llo, playgroun"

Ayrıca hala NSRange ile NSString yöntemi kullanabilirsiniz, ancak bu gibi bir NSString kullandığınızdan emin olun:

let myNSString = str as NSString
myNSString.substringWithRange(NSRange(location: 0, length: 3))

JanX2 belirtildiği gibi, bu ikinci yöntem, unicode dizeleri ile güvenli değildir. not:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • the one am radio

    the one am r

    6 Mayıs 2006
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009