将字符串(如9A.M.-1P.M.)转换为swift中的两个整数(如9和13)
convert a string (such as 9 A.M. - 1 P.M.) to two integers (such as 9 and 13) in swift
我目前正在开发一个应用程序,其用户输入时间的形式为 2 A.M。 - 5 P.M。
有什么方法可以将该字符串转换为军事时间中的两个整数,例如 2 和 17?
var input = "5AM"
var output = Int()
var firstCharacterOfString = input[advance(input.startIndex, 0)]
//search string for first character, return char
var characterToString:String = String(firstCharacterOfString)
//convert char to String
var StringToIntegar:Int = characterToString.toInt()!
//convert String to Int
if input.rangeOfString("PM") != nil{
//if input has "PM" in it perform this code
output = StringToIntegar + 12}
//add 12 to Int
else {//if input DOESN'T have "PM" in it perform this code
output = StringToIntegar}
注意:不适用于 10、11、12,因为只搜索第一个字符
您可以使用 componentsSeparatedByString 拆分此字符串,将这 2 个字符串转换为 NSString 并从每个字符串中提取一个整数值。如果结果小于 12,您还需要将 12 小时加到结果中。如果是凌晨 12 点,您还需要 return 0。:
extension String {
var hour:Int {
var result = (self as NSString).integerValue
if contains(Array(lowercaseString).map{String([=10=])}, "p") {
result = result < 12 ? result + 12 : result
} else {
result = result == 12 ? 0 : result
}
return result
}
var hours:(from:Int, to:Int) {
return (componentsSeparatedByString("-").first!.hour,componentsSeparatedByString("-").last!.hour)
}
}
测试
let timeInput1 = "2 A.M. - 5 P.M."
let timeInput2 = "9 A.M. - 1 P.M."
timeInput1.hours // (.0 2, .1 17)
timeInput1.hours.from // 2
timeInput1.hours.to // 17
timeInput2.hours // (.0 9, .1 13)
timeInput2.hours.from // 9
timeInput2.hours.to // 13
我目前正在开发一个应用程序,其用户输入时间的形式为 2 A.M。 - 5 P.M。
有什么方法可以将该字符串转换为军事时间中的两个整数,例如 2 和 17?
var input = "5AM"
var output = Int()
var firstCharacterOfString = input[advance(input.startIndex, 0)]
//search string for first character, return char
var characterToString:String = String(firstCharacterOfString)
//convert char to String
var StringToIntegar:Int = characterToString.toInt()!
//convert String to Int
if input.rangeOfString("PM") != nil{
//if input has "PM" in it perform this code
output = StringToIntegar + 12}
//add 12 to Int
else {//if input DOESN'T have "PM" in it perform this code
output = StringToIntegar}
注意:不适用于 10、11、12,因为只搜索第一个字符
您可以使用 componentsSeparatedByString 拆分此字符串,将这 2 个字符串转换为 NSString 并从每个字符串中提取一个整数值。如果结果小于 12,您还需要将 12 小时加到结果中。如果是凌晨 12 点,您还需要 return 0。:
extension String {
var hour:Int {
var result = (self as NSString).integerValue
if contains(Array(lowercaseString).map{String([=10=])}, "p") {
result = result < 12 ? result + 12 : result
} else {
result = result == 12 ? 0 : result
}
return result
}
var hours:(from:Int, to:Int) {
return (componentsSeparatedByString("-").first!.hour,componentsSeparatedByString("-").last!.hour)
}
}
测试
let timeInput1 = "2 A.M. - 5 P.M."
let timeInput2 = "9 A.M. - 1 P.M."
timeInput1.hours // (.0 2, .1 17)
timeInput1.hours.from // 2
timeInput1.hours.to // 17
timeInput2.hours // (.0 9, .1 13)
timeInput2.hours.from // 9
timeInput2.hours.to // 13