Извлечение чисел из строки котлин - PullRequest
1 голос
/ 12 ноября 2019

String.replaceAll не работает и не поддерживается в Kotlin. Поэтому я предлагаю демонстрационный пример, я надеюсь, что это поможет.

var string = "vsdhfnmsdbvfuf121535435aewr"  
string.replace("[^0-9]".toRegex(), "")

1 Ответ

1 голос
/ 12 ноября 2019

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]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...