Лучше использовать функцию map{..}
для создания копии списка с обновленными значениями.
val localFiles = File(localPath).list()?.toMutableList() ?: listOf()
val localFileDates = localFiles.mapNotNull { item ->
val date = item.takeLast(10).take(6)
if (date.matches("[0-9]{6}".toRegex()) {
date
} else {
null
}
}
println(localFiles)
println(localFileDates)
Я использую функцию mapNotNull{..}
, вызывает блок для каждого элемента списка и строит новый список только из ненулевых значений.
Вам не нужно var
в вашем коде, явные имена типов также могут быть опущены.
Условие можно упростить - проверка нуля не требуется, регулярное выражение фильтрует в нашем случае data == "null"
, проверку длины также можно включить в регулярное выражение. Переменная date
также может быть использована повторно.