第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

有沒有辦法把String.Index的數(shù)值轉(zhuǎn)成Int呢?

比如我想通過一個字符在字符串中的位置,查找一個數(shù)組中的相應(yīng)元素?

eg:通過“123456”中“3”的位置查找[1,2,3,4,5,6]中的3

正在回答

1 回答

這個問題已經(jīng)過去半年了吧,你應(yīng)該已經(jīng)解決了,習(xí)慣性的看一下問答區(qū),鞏固這節(jié)課學(xué)到的東西,試著答一下。

===================================

源碼中String有這么一句

extension String : CollectionType {

它實(shí)現(xiàn)了CollectionType這個接口

這個接口是這樣的

protocol CollectionType : _CollectionType, SequenceType {

然后看_CollectionType可以知道,Index其實(shí)是ForwardIndexType的一個別名,它和String里面的叫Index的struct是不一樣的,那個是startIndex

這么復(fù)雜的原因是因?yàn)槊總€字符的長度是不一樣的,比如視頻里的\u{1F496}就和普通的字符"3"不一樣長

所以不能簡單的通過index去取字符,也就不可能返回一個Int類型的index,因?yàn)檫@個index代表的位置,和通常概念的index是不一樣的,它是字符在字符串中的真實(shí)位置,不是序號,你想要的其實(shí)是個序號,這個序號我沒找到怎么直接拿,但是用for循環(huán)是可以取到的,數(shù)組里就可以用下標(biāo)了


PS.

然后看到這里,我就不太明白了,怎么才能一個個的去取字符串里的字符呢?

找了點(diǎn)資料后,發(fā)現(xiàn)可以這么實(shí)現(xiàn)

var str = "\u{1F496}3\u{1F496}3\u{1F496}3\u{1F496}3\u{1F496}"

var step = advance(str.startIndex, 1)

var index = step..<step.successor()

var substring: String = str[index]

這樣通過step中的0,1,2,3就可以一個字符串中任意長度的字符了

先通過advance找到第一個字符,然后定義一個range,第一個字符..<下一個字符

再通過這個index就可以拿出對應(yīng)的字符了。

如果要從開頭開始截取到某個位置,可以改成這樣

var step = advance(str.startIndex, 2)

var index = str.startIndex..<step

var substring: String = str[index]


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

TickTock

剛剛對String.Index的理解有點(diǎn)錯誤,視頻里說的String.Index 指的就是那個Struct
2015-03-04 回復(fù) 有任何疑惑可以回復(fù)我~
#2

TickTock

剛剛沒看完,先自己研究了,原來視頻中已經(jīng)講了^_^
2015-03-04 回復(fù) 有任何疑惑可以回復(fù)我~
#3

TickTock

還是老師講的棒啊,我找的資料居然用[]來取字符,老師介紹的幾個方法很實(shí)用,但是swift的字符串操作確實(shí)好麻煩。找過資料再看,感覺清楚多了,上面的回答多少有些誤人子弟的地方,大家不要介意了,我只是試著答一下
2015-03-04 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號