У меня есть строка, содержащая числа. Строка может различаться по длине, количество цифр и чисел также может быть в разных местах.
Я написал некоторый код для поиска числа, добавил к нему один, а затем вернул его в ту же позицию в исходной строке. Например, AA1BB становится AA2BB. Я новичок в Swift, поэтому не совсем уверен, что мой код - самый эффективный способ добиться этого, но он работает.
Однако, если у меня есть строка, подобная AA1BB2CC5H7, как вы могли бы добавить одну к каждому числу, чтобы в результате получился AA2BB3CC6H8? Я предполагаю, что-то вроде l oop, и в идеале с использованием регулярного выражения.
У меня есть код, который работает с первым номером только в строке:
var testString = "AA1BB"
let testRange = testString.startIndex ..< testString.endIndex
let numberValue = testString [testString.range(of:"\\d+", options: .regularExpression) ?? testRange ] //edited to have default value in case there is no number found//
var numberAsInt = Int(numberValue) ?? 0 //change number from string to integer - edited to have a default number as a value//
// if number is not equal to 0 - edited, changed from NSNotfound//
if numberAsInt != 0 {
//add one to the number value
numberAsInt += 1
//change new number value back to a string
let numberAsString = String(numberAsInt)
//assign the changed number "numberAsString" back into original variable into original place using a range (same range method set up as the numberValue variable)
testString = testString.replacingCharacters(in: testString.range(of:"\\d+", options: .regularExpression)! , with: numberAsString)
print (testString)
}
Любые предложения или советы по наилучшему способу решения этой проблемы были бы удивительными. Спасибо!