그래서 저는 서로에게 텍스트 보내기를 포함하는 응용 프로그램을 만들고 있습니다. 이것은 서버를 통해 전송되며 전화 (회사) 자체와 아무 관련이 없습니다.EditText에서 특수 문자 감지 및 계산 - Android
우리 회사 (회사와 회사)는 최대 문자 수를 선택했습니다. - 612.
따라서 612 자의 공백을 사용할 수 있습니다.
나는 다음과 같은 특수 문자가 é, ñ, á, è, à ... 등으로 나타났습니다. 우리가 일하는 나라 (스페인)가 특수 문자를 많이 사용하기 때문에 사람이 1 자리를 사용하는 대신 특수 문자 중 하나를 입력하면 2 자리를 사용합니다.
그래서 기본적으로 내가하고 싶은 것은 입력 할 때 특수 문자의 수와 남은 문자의 수를 "-1"로 계산하는 것입니다.
나는이 상황과 관련된 것을 찾을 수 없었기 때문에 나는 솔직하게 많이 시도하지 않았다.
내 방법은 다음과 같습니다. (아, 등등 글고 + 버튼과는 대화 상자에 있습니다.)
(응용 나쁜 보이지만, 그것이 시작이다!)
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();
}
--- 현재 코드 - -
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){}
});
쓰레기입니다. 알아. 더 똑똑하고 빠른 방법을 찾을 때까지 일이 끝납니다. 정규식은 이러한 작업을 수행하는
http://stackoverflow.com/questions/16160989/how-to-detect-special-characters-in-an-edit-text-and-display- a-toast-in-response – Meenal
@MeenalSharma 나는 그 코드를 수정하려고 노력하고있다. 아직 실험하고있어, 고마워! – Paramone