2017-07-06 98 views

回答

0

添加這種支持正則表達式匹配的字符串:

extension String { 
    mutating func stringByRemovingRegexMatches(pattern: String, replaceWith: String = "") { 
     do { 
      let regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive) 
      let range = NSMakeRange(0, self.characters.count) 
      self = regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith) 
     } catch { 
      return 
     } 
    } 
} 

然後:

var str = ["width 32.3", "Length 61 1/4", "height 23 4/5", "measure 5.23"] 
var vreturn:[String]=[] 

for var s in str { 
    s.stringByRemovingRegexMatches(pattern:"[a-zA-Z]", replaceWith: "") 
    vreturn.append(s) 
} 

print(vreturn) 

來源:Swift replace substring regex

+0

該字符串將是任何字符串,它是一個動態測試輸入,不僅寬度,長度,任何字符串。對於你的情況,如果它是靜態數據,你的提取是正確的。對於動態數據,如何提取數字或分數或數字。 –

+0

非常感謝,你節省了我的時間。現在它完美的工作。 –

+0

請考慮每個提取的字符串以(白色)空格字符開頭。 – vadian

1

與正則表達式的另一種方法

let array = ["width 32.3", "Length 61 1/4", "height 23 4/5", "measure 5.23"] 
let pattern = "\\d+[\\s.][\\d/]+" 

let regex = try! NSRegularExpression(pattern: pattern) 
var result = [String]() 

for item in array { 
    if let match = regex.firstMatch(in: item, range: NSRange(location:0, length: item.characters.count)) { 
     result.append((item as NSString).substring(with: match.range)) 
    } 
} 

print(result) 

圖案搜索

  • 一個或多個數字
  • 後跟一個空白字符或點
  • 接着是一個或多個數字或斜槓
+0

謝謝,這也適用於我需要的確切輸出。 –