Encontrando e Substituindo
Parte da seção Lógica e Fluxo do Journey de Kotlin da Coddy. Lição 49 de 63.
Regex.findAll retorna as correspondências em ordem. Cada correspondência tem uma string value. Você pode iterar sobre essas correspondências ou transformá-las com map e coletá-las com toList. Regex.replace substitui cada correspondência pelo texto de substituição especificado.
Dentro de main:
val digits = Regex("[0-9]+")
println(digits.replace("Box12Shelf7", "#"))Cada grupo consecutivo de dígitos é uma correspondência, portanto há duas substituições.
findAll visita as correspondências em ordem; Regex.replace substitui todas as correspondências por padrão.
Desafio
MédioComplete extractNumbers com o parâmetro text: String. Retorne cada grupo consecutivo de dígitos ASCII como uma string, na ordem da esquerda para a direita. Preserve os zeros à esquerda. Retorne uma lista vazia quando não houver dígitos.
A menos que limites mais rigorosos sejam especificados acima, as coleções contêm no máximo 100 elementos em cada nível, e os argumentos inteiros e os valores inteiros das coleções estão entre -1000 e 1000. O texto fornecido para análise pode incluir representações inválidas ou fora do intervalo, conforme descrito.
Retorne um valor do tipo List<String>. Mantenha o código de entrada/saída fornecido. Ele lê argumentos escalares, um por linha; uma lista começa com sua quantidade, seguida por seus elementos, e um mapa começa com a quantidade de suas entradas, seguida por cada chave e valor. Listas aninhadas repetem o formato de quantidade e elementos para cada linha. O main fornecido imprime o valor retornado seguido por uma nova linha. As listas usam o formato padrão entre colchetes do Kotlin; não imprima rótulos adicionais.
Experimente você mesmo
fun extractNumbers(text: String): List<String> {
// Escreva sua solução aqui.
return emptyList()
}
fun main() {
val text = readLine().orEmpty()
println(extractNumbers(text))
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Mapas — Parte 1
Criando mapasConsultas seguras em mapasAtualizando mapasVerificando chavesRecapitulação — Estoque4Coleções Aninhadas
Listas de ListasPercorrendo LinhasResumos das LinhasAchatar Listas AninhadasRecapitulação - Filas de Assentos7Fluxos de Coleções
Transformando com MapFiltrando ValoresTestando Regras de ColeçõesAcumulando com FoldRecapitulação - Totais Aprovados10Processamento de Texto
Dividindo e UnindoConstruindo Texto com EficiênciaCorrespondendo a Padrões de TextoEncontrando e SubstituindoRecapitulação - Código Mais Limpo2Mapas — Parte 2
Percorrendo entradas de MapChaves e valoresMapas de frequênciaMapas aninhadosRecapitulação — Relatório de frequência5Projeto - Agenda de Contatos
Salvar ContatosEncontrar Contatos3Conjuntos e Associação
Criando ConjuntosAtualizando ConjuntosOperações com ConjuntosVerificando SubconjuntosRecapitulação - Convidados do Evento6Valores de Funções
Escrevendo LambdasTipos de FunçãoPassando FunçõesVariáveis CapturadasRecapitulação - Pontuação ConfigurávelPratique por conta própria: Playground de Kotlin