繁体   English   中英

如何在运行时更改EditText字符串格式?

[英]How to change EditText String format in runtime?

我有一个EditText输入IBAN号。 我想格式化

TR330006100519786457841326

当用户输入我想要输入的输入时

TR33 0006 1005 1978 6457 8413 26

所以基本上我想在每4位数字后添加空格

我尝试使用TextWatcher ,当char sequence length达到4时,我强制使用空格,但是当用户放置“ spaces”时它不起作用

这是执行此操作的基本字符串方法:

String input = "TR330006100519786457841326";
input = input.replaceAll("(\\w{4})", "$1 ");
System.out.println(input);

TR33 0006 1005 1978 6457 8413 26

在文本观察器内部,您可以将字符串替换为上述正则表达式替换生成的输出。

final EditText editText = (EditText) findViewById(R.id.text1);

editText.addTextChangedListener(new TextWatcher() {
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        String input = editText.getText().toString();
        input = input.replaceAll("(\\w{4})", "$1 ");
        editText.setText(input);
    }
});

尝试使用以下正则表达式:

input.replaceAll("....", "$0 ");

使用这个方法

    public static String insertSeperator(String text, String insert, int period) {// text= data, insert= <the data you want to be insert>, period= <Position>
text=text.replaceAll(" ","");

    StringBuilder builder = new StringBuilder(
            text.length() + insert.length() * (text.length() / period) + 1);

    int index = 0;
    String prefix = "";
    while (index < text.length()) {
        // Don't put the insert in the very first iteration.
        // This is easier than appending it *after* each substring
        builder.append(prefix);
        prefix = insert;
        builder.append(text.substring(index, Math.min(index + period, text.length())));
        index += period;
    }
    return builder.toString();
}
            @Override
            public void afterTextChanged(Editable s) {

                if(s.length() == 4 ||s.length() == 9 ||s.length() == 14 ||s.length() == 19 ||s.length() == 23 ||s.length() == 29 ){

                    ediTextIban.append(" ");



                }

            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM