簡體   English   中英

Swift中的RegEx?

[英]RegEx in Swift?

我正在學習Swift,還有另一個問題。 Swift中是否有常規的表達方式,如果有,我該如何使用它們?

在研究中,我發現了一些相互矛盾的信息。 Apple Developer文檔中有提及RegEx的內容,但它看起來與我見過的任何其他語言都非常不同。 如果這是解決方案,該如何使用?

另一方面, 網站建議RegEx在Swift中不存在。 它是否正確?

如果有幫助,我嘗試使用正則表達式從包含價格的JSON樣式API中獲取比特幣的平均價格,但也包含很多我不想要的東西。

對不起,另一個基本問題。

不幸的是,Swift缺少正則表達式文字。 但是您所指的外部鏈接提供了兩種使用正則表達式的方法。

  1. 圍繞NSRegularExpression進行類包裝,並使用此類。
  2. 調用Foundation方法rangeOfString:options: ,將RegularExpressionSearch作為選項。 這在Swift中。

第二種方法更清潔,更易於實現。

Swift中的方法方法定義

func rangeOfString(_ aString: String!,options mask: NSStringCompareOptions) -> NSRange

您可以將其與正則表達式匹配一起使用,例如:

let myStringToBeMatched = "ThisIsMyString"
let myRegex = "ing$"
if let match = myStringToBeMatched.rangeOfString(myRegex, options: .RegularExpressionSearch){
    println("\(myStringToBeMatched) is matching!")
}

這是Apple關於rangeOfString()的文檔

我遇到了同樣的問題。 因此,我寫了一個小包裝-https: //gist.github.com/ningsuhen/dc6e589be7f5a41e7794 在您的項目中添加Regex.swift文件,並添加“ Foundation”框架(如果尚未添加)。 完成此操作后,可以按如下所示使用replace和match方法。

"+91-999-929-5395".replace("[-\\s\\(\\)]", template: "") //replace with empty or remove
"+91-999-929-5395".match("[-\\s\\(\\)]") //simple match - returns only true or false, not the matched patterns.

如果您感興趣的是純驗證(真/假),則另一個簡單的選擇是使用NSPredicate:

這是與加拿大郵政編碼匹配的快速正則表達式:

func isCAZipValid(_ zip: String) -> Bool {
    return NSPredicate(format: "SELF MATCHES %@", "^([A-Z]\\d[A-Z])(\\s|-)?(\\d[A-Z]\\d)$")
             .evaluate(with: zip.uppercased())                
}

Swift沒有正則表達式,因此您需要自己實現一個包裝器類或使用類似這樣的庫來實現正則表達式類http://www.dollarswift.org/#regex

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM