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

标签 ios string swift int

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

这是字符串:

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($0.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($0.range))!}
    print(degrees) // -> [-19, 15]
}
catch {
    print("NSRegularExpression threw error: \(error)")
}

关于ios - 我如何从字符串中获取一个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760857/

相关文章:

swift - 我可以在 `transfrom` 和 `map` 函数中做一些不是 `flatMap` 的事情吗?

仅当服务器需要客户端证书时,iOS 客户端才无法使用 f5 BigIP 进行服务器验证/身份验证

iOS在UIView中打洞不是正方形

ios - 呈现和关闭最后一个 UIViewController

java - 将字符串解析为字符?

android - 在 Text View android 中设置 Span 样式的 HTML 文本

iphone - 检查 UIAppearance 的可用性

Java:从字符串中删除注释

swift - 如果存在管道,则通过 NSTask 的 cURL 不会终止

ios - 无法从应用程序文档文件夹中删除文件