Похоже, вы хотите функцию REGEXP_EXTRACT
. Вот пример:
SELECT REGEXP_EXTRACT(dict, r'client:([^,:]+)') AS client_step1
FROM (
SELECT "category:ops,client:acompany,type:sometype" AS dict
)
В результате он возвращает строку acompany
. Регулярное выражение ищет client:
внутри строки и сопоставляет все после него до следующего ,
или :
или конца строки.
Ошибка в том, что вы не можете изменить состояние локальной переменной в анонимном внутреннем классе в Java, если вы используете локальную переменную в анонимном внутреннем классе, эти локальные переменные будут считаться окончательными. В вашем случае логический успех - это локальная переменная в методе logIn, она рассматривается как конечная переменная, которую нельзя повторно назначить в анонимном внутреннем классе.
В вашем случае подумайте, что это поможет () {@Override public void onComplete (@NonNull Task task) {if (task.isSuccessful ()) {buffer. Append ("true");} else {buffer. Append ("false");}}}); возвратный буфер. нанизывать(). равно («правда»); }
Вы можете использовать AtomicBoolean в качестве окончательного здесь для использования во внутреннем классе, но поскольку функция асинхронная, возвращаемое значение входа в систему установлено неправильно, и вы должны изменить способ обработки вашего запроса на вход.
signInWithEmailAndPassword
является асинхронным и немедленно возвращает с объектом задачи отслеживание текущей работы. Это означает, что LogIn
также немедленно возвращается с начальным значением success
. Через некоторое время ваш слушатель завершения задачи будет вызван, когда данные будут готовы. Здесь вы должны разобраться с результатами входа.
Вы пытаетесь превратить асинхронный метод в синхронный метод. Это не очень хорошая идея. Используйте слушателя для обработки результатов. Вы не можете передать значение из этого слушателя.