Swift String içinde karakter bulma dizini
Yenilgiyi kabul etme zamanı geldi.
Objective-C, gibi bir şey kullanabilirsiniz:
NSString* str = @"abcdefghi";
[str rangeOfString:@"c"].location; // 2
Swift, benzer bir şey görüyorum:
var str = "abcdefghi"
str.rangeOfString("c").startIndex
...ama bu sadece benim bir özgün dize içine indis için kullanabileceğiniz String.Index
verir, ama bir yer açamadı.
String.Index
doğru değeri olan özel bir ıvar _position
) hastalığına yakalandığını FWIW,. Ben sadece ortaya bir neden göremiyorum.
Kolayca Dize bunu kendime ekleyebilirim biliyorum. Bu yeni API neler kaçırdığımı merak ediyorum.
CEVAP
Çözüm bulamayan tek kişi sen değilsin.
String
RandomAccessIndex
uygulamak değil. Farklı bayt uzunluktaki karakter sağlar çünkü muhtemelen. countElements
karakter sayısını elde etmek için kullanmak gerekir. O da pozisyonları için geçerlidir. _position
muhtemelen bayt ham diziye bir göstergesidir ve bunu ifşa etmek istemiyorlar. String.Index
karakterleri ortasında bayt erişmesini bizi korumak içindir.
O herhangi Endeksi String.startIndex
String.endIndex
(String
uygulayan BidirectionalIndex
) oluşturulması gerektiği anlamına gelir. Diğer endeksleri succ
pred
yöntemleri kullanarak oluşturulabilir.
Şimdi endeks ile bize yardımcı olmak için fonksiyonları bir dizi var:
let text = "abc"
let index2 = advance(text.startIndex, 2) //will call succ 2 times (facepalm)
let lastChar: Character = text[index2] //now we can index!
let range = text.rangeOfString("b")
var index: Int = distance(text.startIndex, range.startIndex) //will call succ/pred several times (facepalm)
Cidden dizeleri performansı hakkında endişeliyim. Ayrıca, String.Index
ile çalışan hantal.
Bu uygulama aralıkları bir dize için oluşturulan güvenilir bir şekilde, örneğin: farklı bir dize için kullanılan bir sorun olduğunu unutmayın
var text: String = "abc"
var text2: String = "&
Bunu Paylaş: AYNI ETİKETTEKİ VİDEOLAR
YORUMLAR
SPONSOR VİDEO
İLGİLİ SORU / CEVAPLAR
String içinde karakter testi R...
Hangi karakter CSS sınıf isimleri/seçi...
Java içinde Geçerli Çalışma Dizini eld...
Bir dize içinde hızlı bir karakter tüm...
Javascript string içinde bir karakteri...