我如何从字符串中获取一个整数?

how i get an int from string?

我正在开发一个天气应用程序,我想根据度数生成图像 在一个字符串中,所以我如何从字符串

中提取数字

这是字符串:

Mostly dry. Very mild (max 19ºC on Sat afternoon, min 15ºC on Sunnight). Wind will be generally light.

 @IBAction func weatherButton(sender: UIButton) {

    let url = NSURL(string: "http://www.weather-forecast.com/locations/" + cityNameTextField.text.stringByReplacingOccurrencesOfString(" ", withString: "-") + "/forecasts/latest")

    if url != nil {

        let task = NSURLSession.sharedSession().dataTaskWithURL(url!){ (data, response, error) in

            var urlError = false
            var weather = ""


            if error == nil {

                var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
                var urlContentArray = urlContent!.componentsSeparatedByString("<span class=\"phrase\">")

                if urlContentArray.count > 0 {

                    var weatherArray = urlContentArray[1].componentsSeparatedByString("</span>")
                    weather = weatherArray[0] as! String
                    weather = weather.stringByReplacingOccurrencesOfString("&deg;", withString: "º")
                    println(weather)

                }
                else {
                    urlError = true
                }
            }
            else {
                urlError = true
            }

            dispatch_async(dispatch_get_main_queue()) {
                if urlError == true {
                    self.showError()
                }
                else {
                    self.weatherFact.text = weather
                }
            }



        }
        task.resume()


    }
    else {
        showError()
    }

}

使用 NSRegularExpression 的另一种解决方案。 结果是数字的 Array,并且正则表达式还考虑了低于零的温度

对于Swift 1.2:

let string = "Mostly dry. Very mild (max -19ºC on Sat afternoon, min 15ºC on Sunnight). Wind will be generally light."
let regex = NSRegularExpression(pattern: "-?[0-9]{1,3}", options: NSRegularExpressionOptions(), error: nil)
if let matches = regex?.matchesInString(string, options: NSMatchingOptions(), range: NSRange(location:0, length:count(string))) {
    let degrees = matches.map {return (string as NSString).substringWithRange([=10=].range).toInt()! }
    println(degrees) // -> [-19, 15]
}

对于Swift 2.0:

let string = "Mostly dry. Very mild (max -19ºC on Sat afternoon, min 15ºC on Sunnight). Wind will be generally light."
do {
    let regex = try NSRegularExpression(pattern: "-?[0-9]{1,3}", options: NSRegularExpressionOptions())
    let matches = regex.matchesInString(string, options: NSMatchingOptions(), range: NSRange(location: 0, length: string.characters.count))
    let degrees = matches.map {Int((string as NSString).substringWithRange([=11=].range))!}
    print(degrees) // -> [-19, 15]
}
catch {
    print("NSRegularExpression threw error: \(error)")
}