我想在EditText中更改用户输入的字符。实际上我想要当用户输入编辑文本时,如果输入字符是“S”,则将其替换为“B”字符。我想要实时做这件事。
答案 0 :(得分:7)
我想在EditText中更改用户输入的字符。事实上我想要 当用户键入编辑文本时,如果输入字符为“S”,则替换它 具有“B”字符。我想要实时做这件事。
您很可能需要使用它为您的目标指定的TextWatcher
,并允许您实时操作EditText的内容。
示例:强>
edittext.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void afterTextChanged(Editable s) {
}
});
答案 1 :(得分:1)
像Sajmon解释的那样,你必须实现一个TextWatcher。你必须小心光标。因为用户可以在现有文本字符串中的任何位置输入下一个字符(或剪贴板中的序列)。要处理此问题,您必须在正确的位置更改字符(不要替换整个文本):
damageEditLongText.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) {
// Nothing to replace
if (s.length() == 0)
return;
// Replace 'S' by 'B'
String text = s.toString();
if (Pattern.matches(".*S.*", text)) {
int pos = text.indexOf("S");
s.replace(pos, pos + 1, "B");
}
}
});
答案 2 :(得分:0)
使用
EditText textField = findViewById(R.id.textField);
String text = textField.getText().toString();
然后你可以使用
text.replace('b','s');
接着是
textField.setText(text,TextView.BufferType);
TextView.BufferType可以有3个值here