2013-12-19 3 views
1

я следующий код:Получение инициалов от ввода пользователем Java

System.out.printf("Please enter your full name: "); 
userFullName = KyBdIn.nextLine(); 

userFullName= userFullName.trim().replaceAll(" +", " "); 
userFullName = userFullName.replaceAll("(?<=\\w)\\w+", "."); 
userFullName = userFullName.trim().replaceAll(" +", ""); 

System.out.println(userFullName); 

и я просто интересно, как это работает точно так же?

Это то, что \w означает пробел и что вопрос ??

+0

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html –

+0

Спасибо для ссылки @Grzegorz! Действительно полезно :) – Giovanni

+0

Просто чтобы вы знали, ответ, который вы приняли, в основном мусор. Особенно открывающая строка о «\ w» о пробеле ... Она не имеет ничего общего с пробелами. – Bohemian

ответ

3

Метод replaceAll() имеет два параметра; первым является регулярное выражение (регулярное выражение) в качестве его поискового термина, а второе является замещающим выражением (которое также может содержать определенные ссылки в регулярном выражении, но здесь не используется).

Эта линия:

userFullName = userFullName.trim().replaceAll(" +", " "); 

звонки trim(), которая удаляет начальные и конечные пробелы «» символы, а затем вызывает replaceAll() заменить «один или несколько пробелов» с одним пробелом.

Поскольку эта строка повторяется позже, ее выполнение дважды не добавляет значения - либо можно удалить, что повлияет на конечный результат.

Эта линия:

userFullName = userFullName.replaceAll("(?<=\\w)\\w+", "."); 

заменяет один или несколько символов слова, которые предшествуют словом символ с точкой. Разбивка регулярного выражения (без экранирования Явы обратного слэша - т.е. "\\" является строка с одной обратной косой чертой) является:

  • \w означает «слово символ», который является любая буква, цифра или символ подчеркивания
  • \w+ означает «один или более слов символов» (знак плюс означает один или более из предыдущего выражения)
  • (?<=\w) является «оглядываться», который утверждает, что предыдущий вход является «символом слова»

Вместе регулярное выражение (?<=\w)\w+ эффективно «все, кроме первого символа любого слова»

+0

Спасибо за ответ! : D – Giovanni

0

the \ w stuff - это регулярное выражение, используемое для фильтрации пробелов.

.Trim() удаляет пробелы в любом конце строки

replaceAll(" +", " ") заменяет двойные пробелы с пробелами

replaceAll("(?<=\\w)\\w+", ".") заменяет внутренний пробельные с периодами. этот использует операцию «смотреть за». http://www.regular-expressions.info/lookaround.html

replaceAll(" +", "") удаляет все оставшиеся места.

+0

Спасибо за ваш ответ! Это действительно полезно! : D – Giovanni

Смежные вопросы