Я хотел бы проверить введенную строку в запятой, что довольно просто (просто используется: How can I check if a single character appears in a string?). Теперь я хочу проверить, присутствует ли персонаж более одного раза. (В этом случае запятая (/ u002C)) Я создал этот код:Java: проверьте, содержит ли строка более одного символа
public static void addTextLimiterDouble(final TextField tf, final int maxLength, final Button submitButton) {
tf.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(final ObservableValue<? extends String> ov, final String oldValue, final String newValue) {
if (oldValue.contains("\u002C") && newValue.endsWith("\u002C")) {
tf.setText(oldValue);
}
}
});
Это дает ошибку StackOverflow, потому что кажется, она не может выйти из цикла. Может ли кто-нибудь объяснить, почему это невозможно?
Примечание: Я знаю, что есть несколько способов проверить наличие нескольких персонажей, но мне просто интересно, почему это дает мне ошибку.
Любая помощь очень ценится!
Спасибо за это замечательное объяснение! Я думал, что ChangeListener будет вызван только пользователем, чередующим текст в текстовом поле, но это, очевидно, не так. – bashoogzaad