java - Android Regex - 如何在数字后面添加连字符?

标签 java android regex

如何使用 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/

相关文章:

java - 绘制形状的良好架构

java - Android 库项目 JAR

r - 如何提取R中的第一个字符串

正则表达式匹配具有特定开始/结束的字符串

java - 获取当前/状态变化的小区信号强度。 onStateSignalChanged 从未被调用

java - 在自动完成的东西中加粗用户输入

java - Oracle 11g 中未找到 JDBC 驱动程序类 : oracle. jdbc.OracleDriver

javascript - 检查浏览器是否支持移动设备的 SVG,最好是 Android

android - 在 EditText 框中显示一个随机整数(如果我记错了,则显示另一个框)

javascript - 用于信用卡检测的 RegEx 和 Keyup