Как создать строку номера приращения? - PullRequest
0 голосов
/ 19 сентября 2018

Как и заголовок моего вопроса.
Если я получаю строку 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)
                }
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вам необходимо преобразовать 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 и вернуть не необязательное значение.

0 голосов
/ 19 сентября 2018

Очень простое решение:

В качестве счетчика используйте 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...