gpt4 book ai didi

android - 检测和计算 EditText 中的特殊字符 - Android

转载 作者:搜寻专家 更新时间:2023-11-01 08:01:37 24 4
gpt4 key购买 nike

所以,我正在制作一个应用程序,其中包括相互发送文本。这将通过服务器发送,与手机(公司)本身没有任何关系。

我们(我和我的公司)选择放置最大数量的字符。 - 612.

因此,您可以使用 612 个字符空间。

我注意到特殊字符,例如:é、ñ、á、è、à 等...使用了不止 1 个点。由于我们工作的国家(西类牙)使用了很多诸如此类的特殊字符,我们选择如果用户输入其中一个特殊字符,而不是使用 1 个点,而是使用 2 个点。

所以基本上我想做的是,当这个人正在打字时,计算特殊字符的数量和剩余字符数量的“-1”。

老实说,我没有尝试太多,因为我找不到与这种情况相关的任何内容。

这是我的方法。 (哦,还有 EditText + 按钮等在对话框中。)

 private void smsPopUp() {
// TODO Auto-generated method stub
final Dialog smsDialog = new Dialog(this);
smsDialog.setContentView(R.layout.sms_dialog);


smsDialog.setCanceledOnTouchOutside(false);
Button cancelsms = (Button)smsDialog.findViewById(R.id.smsCancel);
EditText SmsText = (EditText) smsDialog.findViewById(R.id.etSmsText);

final TextView dialogCharCount = (TextView) smsDialog.findViewById(R.id.tvCharCount);

SmsText.addTextChangedListener(new TextWatcher(){
int i = 0;
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
i = 612 - s.length();
dialogCharCount.setText(String.valueOf(i) + " Characters Remaining..");

}

public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}

});



smsDialog.setTitle("To: " + numberfield.getText());

cancelsms.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{

smsDialog.dismiss();
}
});

smsDialog.show();

}

enter image description here

(该应用看起来很糟糕,但它是一个开始!)

--- 当前代码 ---

SmsText.addTextChangedListener(new TextWatcher(){
int i = 0;
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
String str = s.toString();
int specialCounter = 0;
//Loop through chars
for (int i = 0, len = str.length(); i < len; ++i) {
Character c = str.charAt(i);
if (c == 'ñ'
|| c == 'á' || c == 'à' || c == 'ã' || c == 'â' || c == 'ä' //a
|| c == 'Á' || c == 'À' || c == 'Ã' || c == 'Â' || c == 'Ä' //A
|| c == 'é' || c == 'è' || c == 'ÿ' || c == 'ê' || c == 'ë' //e + y
|| c == 'É' || c == 'È' || c == 'Ÿ' || c == 'Ê' || c == 'Ë' //E + Y
|| c == 'í' || c == 'ì' || c == 'î' || c == 'ï' //i
|| c == 'Í' || c == 'Ì' || c == 'Î' || c == 'Ï' //I
|| c == 'ó' || c == 'ò' || c == 'õ' || c == 'ô' || c == 'ö' //o
|| c == 'Ó' || c == 'Ò' || c == 'Õ' || c == 'Ô' || c == 'Ö' //O
|| c == 'ú' || c == 'ù' || c == 'û' || c == 'ü' //u
|| c == 'Ú' || c == 'Ù' || c == 'Û' || c == 'ü' //U
) {
specialCounter++;
}
}

i = 612 - s.length() - specialCounter;
dialogCharCount.setText(String.valueOf(i) + " Characters Remaining..");

}

public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}

});

这是垃圾。我知道。在我找到更智能、更快速的方法之前,它就完成了工作。

最佳答案

只需遍历插入的文本并比较字符

Set<Character> specialChars = new HashSet<Character>();
specialChars.add('é');
// ...
specialChars.add('ñ');

String str = s.toString();
int specialCounter = 0;
for (int i = 0, len = str.length(); i < len; ++i) {
Character c = str.charAt(i);
if (specialChars.contains(c)) {
specialCounter++;
}
}

int totalRemaining = 612 - s.length() - specialCounter;

关于android - 检测和计算 EditText 中的特殊字符 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20635704/

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