Java 将显示名称字符串从“更改”;“第一个M.最后一个”;至;最后,第一个“M”;?

Java 将显示名称字符串从“更改”;“第一个M.最后一个”;至;最后,第一个“M”;?,java,regex,string,Java,Regex,String,我有一个名字“John B.Smith”,我需要将名字的格式改为“Smith,John B”。我正在考虑使用正则表达式,但即使在读过它之后,我也不完全理解它。有人能帮忙吗 您还可以花点时间解释一下表达式中发生了什么吗?与解析正则表达式常用的电子邮件地址或HTTP地址相比,正则表达式解析简单的名称可能有些过分 为什么不直接用空格字符分割名称,然后用第三个数组元素(Smith)创建一个新字符串,在第一个数组元素(John)之前插入一个逗号呢 我使用的正则表达式是(\w+)\s+(\w+)\s+(\w

我有一个名字“John B.Smith”,我需要将名字的格式改为“Smith,John B”。我正在考虑使用正则表达式,但即使在读过它之后,我也不完全理解它。有人能帮忙吗


您还可以花点时间解释一下表达式中发生了什么吗?

与解析正则表达式常用的电子邮件地址或HTTP地址相比,正则表达式解析简单的名称可能有些过分


为什么不直接用空格字符分割名称,然后用第三个数组元素(Smith)创建一个新字符串,在第一个数组元素(John)之前插入一个逗号呢

我使用的正则表达式是
(\w+)\s+(\w+)\s+(\w+)
。下面是它的分解:

  • 当我使用
    \w+
    时,我是说我在寻找一个带有一个或多个字母、数字或下划线的正则表达式。这通常用于查找单词
  • 当我使用
    \s+
    时,我在寻找一个或多个空格字符
  • ()
    意味着我想要捕获(也就是记住)这个正则表达式匹配的输入部分

  • 步骤#1尝试一下#2观察发生了什么#3更新/更正并重复或处理类似name.split(\\s)System.out.println(“nameArray[1]+,“+nameArray[0]