如何使用TextWatcher
?
我有一些文字,用户可以输入一个8位数字(可能是任何东西)。但是,我想将00000000
显示为0000-0000
,12345678
显示为1234-5678
,依此类推。
这是我目前的代码:
@Override
public void afterTextChanged(Editable s) {
if(editabletext.length() == 8) {
editabletext.append("^(?=.*-)[a-zA-Z0-9-]+$");
}
}
答案 0 :(得分:3)
如果你想在4个数字之后添加一个连字符,然后正常显示res,你可以使用这个正则表达式:
([0-9]{4})([0-9]{4})
并将其替换为:
$1-$2
正则表达式搜索8位数字,将前4位和后4位置于捕获组中。使用$1
检索第一个捕获组,并在替换中使用$2
检索第二个捕获组。
您可以改为使用.substring()
,而不是使用正则表达式,如下所示:
String firstFour = editabletext.substring(0, 4);
String lastFour = editabletext.substring(4);
String newEditableText = firstFour + "-" + lastFour
可以压缩为:
editabletext = editabletext.substring(0, 4) + "-" + editabletext.substring(4);
所以,这就是你的代码的样子:
@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")
}
}
答案 1 :(得分:0)
@Override
public void afterTextChanged(Editable text) {
if (text.length() == 4) {
text.append('-');
}
}