从用户Java的输入获取首字母

时间:2013-12-19 15:15:14

标签: java regex

我有以下代码:

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是否意味着空格并且?对它提出疑问?

2 个答案:

答案 0 :(得分:3)

方法replaceAll()有两个参数;第一个是正则表达式(正则表达式)作为其搜索项,第二个是替换表达式(也可能包含某些正则表达式引用,但这里没有使用)。

这一行:

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

调用trim(),删除前导和尾随“空白”字符,然后调用replaceAll()将“一个或多个空格”替换为单个空格。

由于此行稍后会重复,因此执行此操作两次不会增加任何值 - 可以删除这两行并影响最终结果。

这一行:

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

将一个或多个单词字符替换为带有点的单词字符。正则表达式的细分(没有java的反斜杠转义 - 即"\\"是一个带有单个反斜杠的字符串):

  • \w表示“单词字符”,即任何字母,数字或下划线字符
  • \w+表示“一个或多个单词字符”(加号表示前面一个或多个表达式)
  • (?<=\w)是一个“后面看”,断言前面的输入是“单词字符”

正则表达式(?<=\w)\w+有效地“除了任何单词的第一个字符”

答案 1 :(得分:0)

<\ n> \ w stuff是一个用于过滤掉空格的正则表达式。

.Trim()删除字符串两端的空格

replaceAll(" +", " ")用单个空格替换双空格

replaceAll("(?<=\\w)\\w+", ".")用句点替换内部空格。这个使用'后面'操作。 http://www.regular-expressions.info/lookaround.html

replaceAll(" +", "")删除所有剩余空格。