Как перебрать список строк и объединить их в Kotlin? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть список строк, таких как:

listOf("1", "2", "3", "4", "+", "3")

И я хочу объединить, чтобы получить только цифры: "1234". Сначала я попытался использовать цикл for, который сработал.

Однако мне было интересно, есть ли у Kotlin способ выровнять всю вещь, используя одну красивую строку, такую ​​как:

val myList = listOf("1", "2", "3", "4", "+", "3")
someConcatenationFunction(myList) // returns "1234"

Ответы [ 2 ]

3 голосов
/ 13 июня 2019

Решение, которое я нашел, состоит в следующем (можно поместить как в отдельный файл):

fun List<String>.concat() = this.joinToString("") { it }.takeWhile { it.isDigit() }

Итак, в основном это то, что он делает:

  • joinToString(""): JoinToString соединяет содержимое списка со строкой, "" указывает, что вам не нужны разделители в объединенной строке.
  • { it }.takeWhile { it.isDigit() }: означает, что из составного списка мне нужны только те символы, которые являются цифрами. takeWhile остановится сначала без цифры.

И вот, пожалуйста! Теперь вы можете просто сделать:

listOf("1", "2", "3", "4", "+", "3").concat() // returns "1234"
0 голосов
/ 13 июня 2019

Вы явно не сказали это, поэтому мне нужно угадать, что вы хотите объединить целые числа, останавливающиеся только при обнаружении другой строки.Самый простой способ сделать это:

val data = listOf("1", "2", "3", "4", "+", "3")
val concat = data.takeWhile { it.toIntOrNull() != null }.joinToString("")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...