就像我的问题标题一样。
如果我得到字符串00001,我想+1并返回00002。
如果我得到字符串00009,我想+1并返回00010。
....
如果我得到字符串89999,我想+1并返回90000。
如何使此功能看起来更好和更容易?谢谢。
func createFloatNumberString(str: String){
var idArray: [String] = [] //[0,0,0,0,1] [0,0,0,1,0] [8,9,9,9,9]
str.map { (char) in
idArray.append(char.description)
}
idArray[4] = String(Int(idArray[4])!+1)
if idArray[4] == "10" {
idArray[4] = "0"
idArray[3] = String(Int(idArray[3])!+1)
if idArray[3] == "10" {
idArray[3] = "0"
idArray[2] = String(Int(idArray[2])!+1)
if idArray[2] == "10" {
idArray[2] = "0"
idArray[1] = String(Int(idArray[1])!+1)
if idArray[1] == "10" {
idArray[1] = "0"
idArray[0] = String(Int(idArray[0])!+1)
}
}
}
}
}
答案 0 :(得分:1)
您需要将String
转换为Int
,将其递增,然后使用格式化的String
作为返回值。
func incrementFormattedNumericString(numericString:String,increment by:Int=1) -> String? {
guard let numericValue = Int(numericString) else { return nil }
return String(format: "%.5ld", numericValue+by)
}
如果您确定传递给函数的numericString
始终是有效数字,则可以强制将转换解包为Int
并返回非可选值。
答案 1 :(得分:0)
非常简单的解决方案:
作为计数器使用Int
和此扩展名
extension Int {
var fiveDigitStringRepresentation : String {
return String(format: "%05ld", self)
}
}
123.fiveDigitStringRepresentation // "00123"
或者-更复杂-使用结构
struct Count {
var counter = 0
mutating func increment() { counter += 1 }
var fiveDigitStringRepresentation : String {
return String(format: "%05ld", counter)
}
}
var count = Count()
count.increment()
count.increment()
print(count.fiveDigitStringRepresentation) // "00002"