Проверить, содержит ли массив Bash значение

Вы можете сделать это следующим образом

private EditText nameEdit;
private EditText emailEdit;
private String nameDefaultValue = "Your Name";
private String emailDefaultValue = "abc@xyz.com";

и внутри метода onCreate

nameEdit = (EditText) findViewById(R.id.name);
    nameEdit.setText(nameDefaultValue); 
    nameEdit.setOnTouchListener( new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (nameEdit.getText().toString().equals(nameDefaultValue)){
                nameEdit.setText("");
            }
            return false;
        }
    });

    nameEdit.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {               
            if(!hasFocus && TextUtils.isEmpty(nameEdit.getText().toString())){
                nameEdit.setText(nameDefaultValue);
            } else if (hasFocus && nameEdit.getText().toString().equals(nameDefaultValue)){
                nameEdit.setText("");
            }
        }
    });     

    emailEdit = (EditText)findViewById(R.id.email);
    emailEdit.setText(emailDefaultValue);   
    emailEdit.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {               
            if(!hasFocus && TextUtils.isEmpty(emailEdit.getText().toString())){
                emailEdit.setText(emailDefaultValue);
            } else if (hasFocus && emailEdit.getText().toString().equals(emailDefaultValue)){
                emailEdit.setText("");
            }
        }
    });
384
задан codeforester 9 July 2017 в 07:44
поделиться

1 ответ

Короткая проверка без 'grep' и циклов

if ( dlm= 

Этот подход не использует ни внешних утилит как grep, ни циклов.

то, Что происходит здесь:

  • мы используем подстановочную подстроку matcher для нахождения нашего объекта в массиве, который связывается в строку;
  • мы отключаем возможные ложные положительные стороны путем включения нашего поискового объекта между парой разделителей;
  • мы используем непечатаемый символ в качестве разделителя, чтобы быть на безопасной стороне;
  • мы достигаем нашего разделителя, используемого для конкатенации массива также временной заменой IFS значение переменной;
  • мы делаем этот IFS замена значения временный путем оценки нашего условного выражения в подоболочке (в паре круглых скобок)
\x1F' ; IFS="$dlm" ; [[ "$dlm${array[*]}$dlm" == *"$dlm${item}$dlm"* ]] ) ; then echo "array contains '$item'" else echo "array does not contain '$item'" fi

Этот подход не использует ни внешних утилит как grep, ни циклов.

то, Что происходит здесь:

  • мы используем подстановочную подстроку matcher для нахождения нашего объекта в массиве, который связывается в строку;
  • мы отключаем возможные ложные положительные стороны путем включения нашего поискового объекта между парой разделителей;
  • мы используем непечатаемый символ в качестве разделителя, чтобы быть на безопасной стороне;
  • мы достигаем нашего разделителя, используемого для конкатенации массива также временной заменой IFS значение переменной;
  • мы делаем этот IFS замена значения временный путем оценки нашего условного выражения в подоболочке (в паре круглых скобок)
0
ответ дан 22 November 2019 в 23:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: