iOS截取特定的字串(正則匹配)

來源:互聯網
上載者:User

標籤:phone   先後   express   截取   ref   bcd   reg   min   sse   

有時候我們會有需求從一個字串中截取其他的字串,根據情況的不同,我們來分析幾種方法~~

一. 固定長度字串中截取固定位置長度的字串

// 這是比較簡單的一種情況:比如截取手機號的後4位 let phoneNum = "18515383061" var suffixNum:String? // 從倒數第四位開始截取,截取到最後 suffixNum = phoneNum.substringFromIndex(phoneNum.endIndex.advancedBy(-4)) // 從開頭截取到第三位,擷取手機號前3位 let prefixNum = phoneNum.substringToIndex(phoneNum.startIndex.advancedBy(3)) // 截取區間內字串 suffixNum = phoneNum.substringWithRange(phoneNum.endIndex.advancedBy(-4)..<phoneNum.endIndex)

二. 不固定長度的字串,但是有分隔字元

 //例如擷取日期中的年,月,日 // 分割符可以是任意的字元,一般為‘/‘,‘_‘,‘空格‘,或者是特殊的字元. let timeStr = "2013/10/26" let timeArr = timeStr.componentsSeparatedByString("/") print(timeArr)

三. 不固定長度的字串,取特殊規則下的字串

 // 如下所示,我們想要截取第一個中括弧裡面的字串 // 假設這個字串是伺服器返回的,長度不定,中括弧的位置也不定,先後通過簡單的截取就比較困難了 // 這個時候就要用到**Regex**,相信大家知道,但如何在Swift中利用Regex來篩選值呢,我們來分析一下 // rangOfString本來是用來收索文中的字串的,但是可以選擇模式.這裡選擇(.RegularExpressionSearch)也就是正則的搜尋 // 但是OC和Swift中都只有這一種收索方法,只有Search,沒有其他的,相比其他的語言(Python,PHP)弱太多了 // 單純匹配中括弧裡的字正則想必大家都會寫 "\\[.*\\]",但是有一個問題就是收索的內容是‘[thing] jflsdfs [do]‘,這顯然不是我們想要的 // 這就要收到正則的貪婪模式了,預設它儘可能多的匹配符合要求的字串,而我們想讓他滿足最精巧的那個,就需要加上一個?號,就是這個樣子"\\[.*?\\]",這樣搜尋到的就是‘[thing]‘ // 你發現這還不是我們想要的,為什麼要帶上‘[‘和‘]‘呢,但是沒辦法,這是你的檢索條件啊 // 但是什麼也難不倒正則,正則當中有 零寬斷言,<零寬度正預測先行斷言(?=exp)> 斷言自身出現的位置的後面能匹配運算式exp,  // <零寬度正回顧後發斷言(?<=exp)>,它斷言自身出現的位置的前面能匹配運算式exp,最終我們的運算式是"(?<=\\[).*?(?=\\])" let string = "I Want to Do some [thing] jflsdfs [do]" if let result = string.rangeOfString("(?<=\\[).*?(?=\\])", options: .RegularExpressionSearch, range:string.startIndex..<string.endIndex, locale: nil)  {         print(string.substringWithRange(result))     }


SSBun
連結:http://www.jianshu.com/p/d6fcc9bcd8de
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

iOS截取特定的字串(正則匹配)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.