我需要限制用户在单词之间输入多个空格。有没有办法限制用户每个单词只有一个空格???
if (validateStatus
&& RegistraionRequestType.RegisterationCompleteReq.descdet.trim()
.length() < 50) {
Log.e("Validate---------------------- ",RegistraionRequestType.RegisterationCompleteReq.descdet+ " --ValidateXCalled");
warning = getResources().getString(R.string.description_msg);
registeration_frm_et_id_description.requestFocus();
validateStatus = false;
}
答案 0 :(得分:4)
试试这个
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
editText.setText(s.toString().trim().replaceAll("\\s+", " "));
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
答案 1 :(得分:1)
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String temp = s.toString();
temp.replace(" ", " ");
editText.setText(temp);
}
});
答案 2 :(得分:0)
你可以调用EditText.addTextChangedListener(TextWatcher)
然后实现自己的TextWatcher接口。
关键是
afterTextChanged(Editable s)
您可以从第一个参数检查EditText中的现有文本。如果最后一个字符是2个连续的空格,则可以通过编程方式将文本设置为其子字符串(0,length-1)。
答案 3 :(得分:0)
如果要删除多个空格,请使用以下代码:
string.replaceAll("\\s", " ");
希望它有所帮助!!
答案 4 :(得分:0)
我知道它的答案太老了,仍然想分享一些有用的代码作为解决方案:
private InputFilter spaceFilter() {
return new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (Character.isWhitespace(source.charAt(i))) {
if (dstart == 0 || (dstart > 1 && dest.charAt(dstart - 1) == ' ')) return "";
}
}
return null;
}
};
}