replace
не будет мутировать строку str
, поэтому вполне допустимо, чтобы str
был неизменным (val
), каким он должен быть.
val str = "vsdhfnmsdbvfuf121535435aewr"
val num = str.replace(Regex("[^0-9]"), "")
println(num)
Выход:
4545121535435
Поскольку заголовок ваших вопросов гласит «цифры»: если у вас есть несколько чисел, разбросанных по строке, вы можете использовать Regex.findAll. Это также более отказоустойчивое решение, потому что если вы просто удалите то, что находится вокруг чисел, вы можете интерпретировать «a1b2c3» как «123» вместо «[1, 2, 3]».
val str = "vsdhfn4545msdbvfuf121535435aewr"
val numbers = Regex("[0-9]+").findAll(str)
.map(MatchResult::value)
.toList()
println(numbers)
Вывод:
[4545, 121535435]