如何使用 TextWatcher
在一定数量的数字后面添加连字符?
我有一些文本,用户可以在其中输入 8 位数字(可以是任何数字)。但是,我想将 00000000
显示为 0000-0000
,将 12345678
显示为 1234-5678
,依此类推。
这是我当前的代码:
@Override
public void afterTextChanged(Editable s) {
if(editabletext.length() == 8) {
editabletext.append("^(?=.*-)[a-zA-Z0-9-]+$");
}
}
最佳答案
如果你想在4个数字后面添加一个连字符,然后正常显示资源,你可以使用这个正则表达式:
([0-9]{4})([0-9]{4})
并将其替换为:
$1-$2
正则表达式搜索 8 位数字,将前 4 位和后 4 位放入捕获组中。第一个捕获组使用 $1
检索,第二个捕获组使用替换中的 $2
检索。
Here's a live example在 regex101.com 上
您可以使用 .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")
}
}
关于java - Android Regex - 如何在数字后面添加连字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051955/