Android Regex - 如何在数字后加上连字符?

时间:2015-03-14 17:27:39

标签: java android regex

如何使用TextWatcher

在一定数量的数字后面加一个连字符?

我有一些文字,用户可以输入一个8位数字(可能是任何东西)。但是,我想将00000000显示为0000-000012345678显示为1234-5678,依此类推。

这是我目前的代码:

@Override
public void afterTextChanged(Editable s) {

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

}

2 个答案:

答案 0 :(得分:3)

如果你想在4个数字之后添加一个连字符,然后正常显示res,你可以使用这个正则表达式:

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

并将其替换为:

$1-$2

正则表达式搜索8位数字,将前4位和后4位置于捕获组中。使用$1检索第一个捕获组,并在替换中使用$2检索第二个捕获组。

regex101.com上的

Here's a live example

您可以改为使用.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('-');
    }
}