gpt4 book ai didi

android - 在android中输入编辑文本时删除特殊字符;

转载 作者:行者123 更新时间:2023-11-30 03:58:05 25 4
gpt4 key购买 nike

如果我在输入数据时向编辑文本添加任何特殊符号,我需要删除字符。例如,我输入一个词 smwinæ æ 是一个特殊字符,所以如果我添加字符编辑文本应该删除 æ并通过替换 æ 仅显示 smwin。我使用了文本更改监听器。检查下面的代码

email.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
// Abstract Method of TextWatcher Interface.
System.out.println("started after");
}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
System.out.println("started");

// Abstract Method of TextWatcher Interface.
}

public void onTextChanged(CharSequence searchcontact, int start,
int before, int count) {
System.out.println("sssssssssss"+searchcontact);
String a=searchcontact.toString();
System.out.println("casted "+a);
String[] parts = a.split(" ");
String lastWord = parts[parts.length - 1];
System.out.println("------------------------------"+lastWord);

// String lastWord = a.substring(a.lastIndexOf(" ")+1);
// System.out.println("lastword"+lastWord);
if(a.equals("p"))
{

try {
email.getText().delete(email.getSelectionEnd() - 1, email.getSelectionStart());
} catch (Exception e) {
try {
email.getText().delete(email.length() - 1, email.length());
} catch (Exception myException) {
//textfield.getText().delete(textfield.length(), textfield.length() - 1);
}
}
// Method User For Sort Out THE Words
// in
// The SearchBar
}
}

});

这里当文本更改时,我尝试获取字符串中的最后一个单词,但我没有这样做。已使用

String a=searchcontact.toString(); System.out.println("casted "+a); String[] parts = a.split(" "); String lastWord = parts[parts.length - 1];

要得到最后一个词,但它会在编辑文本中打印整个字符串我该怎么做,请帮忙

最佳答案

您可以将 TextWatcher 添加到 EditText 并在每次通知文本时得到通知。使用它,您只需解析字符串以查找空格后的字符,并将它们更新为大写。

这是我做的一个快速测试,效果很好(远非最佳,因为每次您编辑 Editable 时它都会再次调用监听器...)。

editText.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable s) {
String string = s.toString();
int index = -1;
while (((index = string.indexOf(' ', index + 1)) != -1) && (index + 1 < string.length())) {
// Get character
char c = string.charAt(index + 1);
if (Character.isLowerCase(c)) {

// Replace in editable by uppercase version
s.replace(index+1, index + 2, Character.toString(c).toUpperCase());
}
}
}
});

为避免被频繁调用,您可以在 char[] 中进行所有更改,并且仅在进行更改后才提交到 Editable。

一个更简单的解决方案可能是只在您的字符串上使用 split(' '),将 String[] 中的所有首字母替换为大写版本(如果需要),并且只向 Editable 提交一次。

一个更简单的优化是在匿名类中添加一个 bool 值,将其设置为在您进入 afterTextChanged 时尝试,在您退出时将其设置回 false,并且仅在 bool 值为 false 时才处理字符串。

关于android - 在android中输入编辑文本时删除特殊字符;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13025147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com