класс javafx.scene.Node имеет пару методов setUserData (Object) и Object getUserData ()
, которые вы могли бы использовать для добавления вашей информации в узел.
So , вы можете вызвать page.setUserData (info);
И контроллер может проверить, задана ли информация. Кроме того, вы можете использовать ObjectProperty для пересылки данных назад, если это необходимо.
Соблюдайте документацию здесь: http://docs.oracle.com/javafx/2/api/javafx/fxml /doc-files/introduction_to_fxml.html Перед фразой «В первой версии handleButtonAction () помечен с помощью @FXML, чтобы разрешить разметку, определенную в документе контроллера, вызвать ее. Во втором примере поле кнопки аннотируется, чтобы позволить загрузчику устанавливать его значение. Метод initialize () аналогично аннотируется. "
Итак, вам нужно связать контроллер с узлом и установить пользовательские данные для узла.
Используйте [^ A-Za-z0-9]
.
Примечание: удален пробел, поскольку он обычно не считается буквенно-цифровым.
Гуава CharMatcher предоставляет краткое решение:
output = CharMatcher.javaLetterOrDigit().retainFrom(input);
Попробуйте
return value.replaceAll("[^A-Za-z0-9]", "");
или
return value.replaceAll("[\\W]|_", "");
return value.replaceAll("[^A-Za-z0-9 ]", "");
Это оставит без изменений пробелов. Я полагаю, это то, что вы хотите. В противном случае удалите пробел из регулярного выражения.
Регулярные выражения Java не требуют, чтобы вы ставили косую черту ( /
) или любой другой разделитель вокруг регулярного выражения, в отличие от других языков, таких как Perl, для пример.
Я создал этот метод для создания имен файлов:
public static String safeChar(String input)
{
char[] allowed = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_".toCharArray();
char[] charArray = input.toString().toCharArray();
StringBuilder result = new StringBuilder();
for (char c : charArray)
{
for (char a : allowed)
{
if(c==a) result.append(a);
}
}
return result.toString();
}