为我糟糕的英语道歉,我正在使用谷歌翻译。
我正在创建一个用户必须创建新配置文件的活动。 我限制编辑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();
}
}
答案 0 :(得分:20)
您可以使用:
string.matches("[a-zA-Z.? ]*")
如果字符串中的每个字符都是小写字母a-z,大写字母A-Z,句点,问号或空格,则评估为true。
像:
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
}
}
}
"[a-zA-Z0-9.? ]*"
答案 1 :(得分:3)
在xml文件的edittext中使用以下行,以便它只输入字母和数字;
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
如果需要动态响应,请使用textwatcher作为edittext;
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) {}
});
答案 2 :(得分:1)
你应该去Android Saripaar,这是一个非常轻量级的简单API for android。在您的情况下,您可以在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将使您以适当的方式对您的验证过程进行更多控制。
您也可以使用[^a-zA-Z0-9]
代替[\\W+]
作为调整程序表达式。
希望这会有所帮助.. :)
答案 3 :(得分:1)
如果您想获取特殊字符并支持更多非常重要的英语字母下注和数字:
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;
}
答案 4 :(得分:1)
由于我无法在其他帖子上发表评论,因此我将用最时尚的视觉提示来补充投票数最多的答案。
首先,将Edittext(etNombre)数据传递给String变量。
例如:String nombre = etNombre.getText().toString();
然后,使用if进行验证:
if (!nombre.matches("[a-zA-Z.? ]*")) {
etNombre.setError("Your message here");
}
此解决方案将设置一个“!”图标,它比Toast好得多,因为该消息将用户指向错误。
答案 5 :(得分:-1)
使用:
public void click (View view) {
if (edittext.matcher(abcd).find ()) {
Toast.maketext(this, "abcd Found", TOAST.LENGTH_LONG).show ();
}
}