Given a String taken from the internet, such as:
"A dusting of snow giving way to moderate rain (total 10mm) heaviest on Thu night. Freeze-thaw conditions (max 8°C on Fri morning, min -2°C on Wed night). Mainly strong winds."
Using Swift 3, I want to convert the temperatures to Fahrenheit. So I need to find any numbers that have °C after them (including negative numbers); convert them to Fahrenheit, and then replace the integer back into the string.
I was originally trying to use: components(separatedBy: String). I did get it to work with this method. Although I think there is probably a better way.
func convertStringToFahrenheit (_ message: String) -> String{
var stringBuilder = String()
let stringArray = message.components(separatedBy: "°C")
for subString in stringArray {
if subString != stringArray.last {
if subString.contains("(max "){
let subStringArray = subString.components(separatedBy: "(max ")
stringBuilder.append(subStringArray[0])
stringBuilder.append("(max ")
if var tempInt = Int(subStringArray[1]){
tempInt = convertCelsiusToFahrenheit(tempInt)
stringBuilder.append(String(tempInt))
stringBuilder.append("°F")
}
}
else if subString.contains(", min "){
let subStringArray = subString.components(separatedBy: ", min ")
stringBuilder.append(subStringArray[0])
stringBuilder.append(", min ")
if var tempInt = Int(subStringArray[1]){
tempInt = convertCelsiusToFahrenheit(tempInt)
stringBuilder.append(String(tempInt))
stringBuilder.append("°F")
}
}
}
else {
stringBuilder.append(subString)
}
}
return stringBuilder
}