/ / Regex Android - como colocar hífen após os números? - java, android, regex

Regex Android - como colocar hífen após os números? - java, android, regex

Como posso colocar um hífen após determinado número de dígitos usando TextWatcher?

Eu tenho algum texto onde um usuário pode inserir um número de 8 dígitos (pode ser qualquer coisa). No entanto, quero exibir 00000000 Como 0000-0000, 12345678 Como 1234-5678, e assim por diante.

Aqui está meu código atual:

@Override
public void afterTextChanged(Editable s) {

if(editabletext.length() == 8) {
editabletext.append("^(?=.*-)[a-zA-Z0-9-]+$");
}

}

Respostas:

3 para resposta № 1

Se você quisesse adicionar um hífen após 4 números e, em seguida, exibir as res normalmente, você poderia usar essa regex:

([0-9]{4})([0-9]{4})

e substitua por:

$1-$2

A regex procura por 8 dígitos, colocando os 4 primeiros e os 4 últimos em grupos de captura. O primeiro grupo de captura é recuperado usando $1, e o segundo é recuperado usando $2 na substituição.

Aqui está um exemplo ao vivo em regex101.com

Em vez de usar um regex, você poderia simplesmente usar .substring(), igual a:

String firstFour = editabletext.substring(0, 4);
String lastFour = editabletext.substring(4);
String newEditableText = firstFour + "-" + lastFour

Qual poderia ser comprimido para ser:

editabletext = editabletext.substring(0, 4) + "-" + editabletext.substring(4);

Então, aqui está o seu código:

@Override
public void afterTextChanged(Editable s) {

if(editabletext.length() == 8){
editabletext = editabletext.substring(0, 4) + "-" + editabletext.substring(4);

//or you could use a regex:

editabletext = editabletext.replaceAll("([0-9]{4})([0-9]{4})", "$1-$2")
}
}

0 para resposta № 2
@Override
public void afterTextChanged(Editable text) {

if (text.length() == 4) {
text.append("-");
}
}