2015-12-21 2 views
0

In this interface how to make user insert only one word without spaceКак я могу проверить, если пользователь вставляет более одного слова, пробела или специального символа?

в этом интерфейсе, как заставить пользователя вставлять только одно слово без пробела или специальный символ, так как я могу это сделать?

+0

Какие рамки вы используете? Вы уже создали остальную часть пользовательского интерфейса? –

+0

Вы хотите обработать удаление пробелов и специальных символов или просто хотите ограничить доступ пользователя к пробелам и специальным символам? –

+0

Я хочу, чтобы пользователь не вводил пробелы и специальные символы – user3233919

ответ

0

Если у вас есть следующие настройки

раскладку .xml

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/editText" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true"/> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

EditText editText; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    editText = (EditText) findViewById(R.id.editText); 
    editText.addTextChangedListener(textWatcher); 

} 

TextWatcher textWatcher = new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     String text=editText.getText().toString(); 
     String[] words=text.split("\\s+"); 
     if(words.length>1){ 
      editText.setError("Please donot enter more than a word!"); 
      editText.setText(words[0]); 
     } 
     else{ 
      Pattern p = Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE); 
      Matcher m = p.matcher(text); 
      boolean b = m.find(); 

      if (b) { 
       editText.setError("Please donot enter any special character!"); 
      } 
     } 
    } 
} 

Screenshot 1 Screenshot 2

0

Вы можете использовать Character.isWhitespace

что-то вроде этого:

public static boolean containSpace(final String userName){ 
    if(userName != null){ 
     for(int i = 0; i < userName.length(); i++){ 
      if(Character.isWhitespace(userName.charAt(i))){ 
       return true; 
      } 
     } 
    } 
    return false; 
} 
0

Используйте regular expression.

Предполагая, что вы только хотите, чтобы буквы и цифры, это выражение будет делать:

"[a-zA-Z0-9]+" 

// same as above 
"\\p{Alnum}+" 

// full unicode support, e.g. accented letters like é, ô, and ñ 
"(?U)\\p{Alnum}+" 

код, чтобы проверить это:

if (value.matches("(?U)\\p{Alnum}+")) { 
    // value is good 
} else { 
    // value is bad 
} 
Смежные вопросы