Java 在EditText(Android)中过滤多个空格
我需要限制用户在单词之间输入多个空格。有没有办法限制用户每个单词只有一个空格Java 在EditText(Android)中过滤多个空格,java,android,spacing,Java,Android,Spacing,我需要限制用户在单词之间输入多个空格。有没有办法限制用户每个单词只有一个空格 if (validateStatus && RegistraionRequestType.RegisterationCompleteReq.descdet.trim() .length() < 50) { Log.e("Validate---------------------- ",RegistraionR
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;
}
if(validateStatus)
&&RegistrationRequestType.RegistrationCompleteReq.descdet.trim()文件
.length()<50){
Log.e(“Validate----------------”,registrationRequestType.registrationCompleteReq.descdet+“-validateExcalled”);
警告=getResources().getString(R.string.description\u msg);
Registration_frm_et_id_description.requestFocus();
validateStatus=false;
}
试试这个
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) {
}
});
试试这个
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) {
}
});
您可以调用EditText.addTextChangedListener(TextWatcher) 然后实现您自己的TextWatcher接口 关键是
afterTextChanged(Editable s)
可以从第一个参数检查EditText中的现有文本。如果最后一个字符是两个连续的空格,您可以通过编程将文本设置为其子字符串(0,长度为1)。您可以调用EditText.addTextChangedListener(TextWatcher) 然后实现您自己的TextWatcher接口 关键是
afterTextChanged(Editable s)
可以从第一个参数检查EditText中的现有文本。如果最后一个字符是两个连续的空格,则可以通过编程方式将文本设置为其子字符串(0,长度为1)。如果要删除多个空格,请使用以下代码:
string.replaceAll("\\s", " ");
希望能有帮助 如果要删除多个空格,请使用以下代码:
string.replaceAll("\\s", " ");
希望能有帮助 我知道这个问题太老了,无法回答,仍然想分享一些有用的代码作为解决方案:
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;
}
};
}
private InputFilter spaceFilter(){
返回新的InputFilter(){
公共CharSequence筛选器(CharSequence源、int开始、int结束、,
跨越目的地、内部数据起点、内部数据起点){
for(int i=start;i1&&dest.charAt(dstart-1)=='')返回“”;
}
}
返回null;
}
};
}
我知道这个问题太老了,无法回答,仍然想分享一些有用的代码作为解决方案:
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;
}
};
}
private InputFilter spaceFilter(){
返回新的InputFilter(){
公共CharSequence筛选器(CharSequence源、int开始、int结束、,
跨越目的地、内部数据起点、内部数据起点){
for(int i=start;i1&&dest.charAt(dstart-1)=='')返回“”;
}
}
返回null;
}
};
}
@PratikMohanraoGondil:它对我有用,请给我看一下你的代码片段,这样我就可以查看了it@PratikMohanraoGondil:它对我有用,请给我看一下你的代码片段,这样我就可以查看它了