描述:
我正在创建一个应用,您可以更改个人资料的名称。问题是用户可以用很多空格写他们的名字,我不知道如何避免这个问题。
示例:
(我将用下划线“ _”代表空白)>
编辑您的姓名:
T_____omas_Men________n____i_ti //// (31个字符)] >>如果有人将其写在编辑文本上,将保留空白,然后我们将在用户个人资料中看到该大名称。
我想要什么?
我需要一个代码,该代码能够检查何时编辑文本中的一行中有多个空格(> 1),以便删除它们。该代码应该能够检测到“ name”
在“ last name”之后必须有一个空格。说明:我正在创建一个应用,您可以更改个人资料的名称。问题是用户可以用很多空格写他们的名字,我不知道如何避免这个问题。 ...
如果您写字符,请在下面的代码段中尝试,然后在此之后只能写一个空格。
final EditText etMyEdittext = (EditText)findViewById(R.id.editText1_in_row);
InputFilter filter = new InputFilter() {
boolean canEnterSpace = false;
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if(etMyEdittext .getText().toString().equals(""))
{
canEnterSpace = false;
}
StringBuilder builder = new StringBuilder();
for (int i = start; i < end; i++) {
char currentChar = source.charAt(i);
if (Character.isLetterOrDigit(currentChar) || currentChar == '_') {
builder.append(currentChar);
canEnterSpace = true;
}
if(Character.isWhitespace(currentChar) && canEnterSpace) {
builder.append(currentChar);
}
}
return builder.toString();
}
};
etMyEdittext.setFilters(new InputFilter[]{filter});
您可以通过棘手的方式使用TextWatcher来限制EditText。
我提供了另一种解决方案,专注于使用裸字符串而不是EditText。请记住,此答案与此处的其他答案结合使用。