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 № 1Se 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("-");
}
}