我的英文不好的道歉,我使用谷歌翻译。
我创建其中用户必须创建一个新的配置文件的活动。 我把限制编辑的15个字符的文本,我想,如果新的配置文件名称有空格或特殊字符显示警告。 随着在线视频游戏
下面的代码帮我检测的空间,而不是特殊字符。
我需要帮助识别特殊字符,并显示在响应警告。
@Override
public void onClick(View v) {
//Convertimos el contenido en la caja de texto en un String
String nombre = nombreUsuario.getText().toString();
//Si el tamaño del String es igual a 0, que es es lo mismo que dijeramos "Si esta vacio"
if (nombre.length() == 0) {
//Creamos el aviso
Toast aviso = Toast.makeText(getApplicationContext(), "Por favor introduce un nombre de Usuario", Toast.LENGTH_LONG);
aviso.show();
} else if (nombre.contains(" ") | nombre.contains("\\W")) {
Toast aviso = Toast.makeText(getApplicationContext(), "No son permitidos los espacios ni los caracteres especiales", Toast.LENGTH_LONG);
aviso.show();
} else {
nombre = nombreUsuario.getText().toString();
//Conectamos con la base de datos
//Creamos un bojeto y lo iniciamos con new
Plantilla entrada = new Plantilla(CrearUsuarioActivity.this);
entrada.abrir();
//creamos un metodo para escribir en la base de datos (crear entradas)
entrada.crearEntrada(nombre);
entrada.cerrar();
}
}
Answer 1:
You can use:
string.matches("[a-zA-Z.? ]*")
That will evaluate to true if every character in the string is either a lowercase letter a-z, an uppercase letter A-Z, a period, a question mark, or a space.
like:
public void Click(View v) {
if (v.getId() == R.id.button1) {
String nombre = textMessage.getText().toString();
if (nombre.length() == 0) {
// Creamos el aviso
Toast aviso = Toast.makeText(getApplicationContext(),
"Por favor introduce un nombre de Usuario",
Toast.LENGTH_LONG);
aviso.show();
} else if (!nombre.matches("[a-zA-Z.? ]*")) {
Toast aviso = Toast
.makeText(
getApplicationContext(),
"No son permitidos los espacios ni los caracteres especiales",
Toast.LENGTH_LONG);
aviso.show();
} else {
// Do what ever you want
}
}
}
for allow a-z, A-Z, 0-9 use "[a-zA-Z0-9.? ]*"
Answer 2:
使用下面的行中的EditText在XML文件中,使得其仅进入字母和数字;
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
如果您需要为您的EditText动态响应使用textwatcher;
yourEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
// Here you need to check special character, if found then show error message
if (s.toString().contains("%"))
{
// Display error message
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
Answer 3:
你去768,16对于Android的Saripaar ,重量很轻,为Android简单的API。 你的情况,你可以在你EDITTEXT instence做以下的东西......
@TextRule(order = 1, minLength = 15, message = "Enter atleast 15 characters.")
@Regex(order = 2, pattern = "[\\W+]", message = "Special characters are not allowed.")
private TextView yourEditText;
使用此API将导致你有在适当的方式,您的验证过程更contorls。 你也可以使用[^a-zA-Z0-9]
而不是[\\W+]
为您reguler表达模式。
希望这可以帮助..:)
Answer 4:
如果你想拿起特殊字符,支持不仅仅是非常resrictive一套英文字母的选择和数量的更多:
String edit_text_name = YourEditTextName.getText().toString();
Pattern regex = Pattern.compile("[$&+,:;=\\\\?@#|/'<>.^*()%!-]");
if (regex.matcher(edit_text_name).find()) {
Log.d(TAG, "SPECIAL CHARS FOUND");
//handle your action here toast message/ snackbar or something else
return;
}
Answer 5:
正如我不能在其他帖子发表评论,我将补充最投票的答案与一个更时尚的视觉分辨率的提示。
首先,EDITTEXT(etNombre)数据传递给字符串变量。 实施例: String nombre = etNombre.getText().toString();
然后,使用一个if来验证:
if (!nombre.matches("[a-zA-Z.? ]*")) {
etNombre.setError("Your message here");
}
该解决方案将设置一个“!” 图标上EDITTEXT和它比面包要好得多,因为该消息被指向用户的错误。
Answer 6:
使用:
public void click (View view) {
if (edittext.matcher(abcd).find ()) {
Toast.maketext(this, "abcd Found", TOAST.LENGTH_LONG).show ();
}
}
文章来源: How to detect special characters in an edit text and display a Toast in response (Android)?