Java 从字符串中提取文本并写入另一个字符串

Java 从字符串中提取文本并写入另一个字符串,java,Java,我有这样的绳子:“欢迎维塔利·麦凯” 我需要从这个字符串中删除我的名字和姓氏,它应该保留在新字符串中:“Mckay,Vitalii” 但它不仅适用于我的名字,还适用于其他不同长度的名字,例如: “欢迎约翰·史密斯”->“史密斯,约翰” 或 “欢迎Andrea J.”->“J.Andrea” 您能用一个分隔符吗 i、 e.使用分隔符分隔三个字符串,只打印出两个所需的值(姓氏[2]/Firstname[1]) 根据@Vishal的回答和OP对@Max回答的评论,我相信这会奏效: String

我有这样的绳子:“欢迎维塔利·麦凯” 我需要从这个字符串中删除我的名字和姓氏,它应该保留在新字符串中:“Mckay,Vitalii”

但它不仅适用于我的名字,还适用于其他不同长度的名字,例如:

  • “欢迎约翰·史密斯”->“史密斯,约翰”

  • “欢迎Andrea J.”->“J.Andrea”


    • 您能用一个分隔符吗

      i、 e.使用分隔符分隔三个字符串,只打印出两个所需的值(姓氏[2]/Firstname[1])


      根据@Vishal的回答和OP对@Max回答的评论,我相信这会奏效:

      String name = " Welcome Vitalii Mckay "; // with spaces in the beginning and in the end
      String[] parts = name.trim().split(" "); // you don't really need the \\
      name = parts[2] + ", " + parts[1];
      

      只需确保您的
      字符串
      输入trim

      每个输入的“欢迎”是静态词吗?是的,是。我编辑了一篇关于“欢迎Andrea J.”->“J,John”背后的逻辑的文章。
      ?String st=“欢迎John Smith”;圣子串(8);我的错误,sry,编辑了“Welcome Andrea J.”->“J,Andrea”。谢谢,它是有效的,但不正确,因为我有一个最后带有空格的字符串,比如:string s=“Welcome Vitalii Mckay”,在我得到这样的结果后:“Vitalii,Wellcome”如何命名,比如:“Wellcome Vitalii Mckay”?你能给我一个例子说明整个字符串是什么吗?确保在上面的代码中使用了正确的数组值:[0]=“欢迎”[1]=“Vitali”[2]=“Mckay”如何命名为“Wellcome Vitalii Mckay”?我在欢迎前和欢迎后都有空间,谢谢你的回答。这个回答对我很有帮助。
      // "Welcome" 
      // followed by the not of space one or more times
      // then a space
      // followed by anything one or more times
      Pattern pattern = Pattern.compile("Welcome ([^ ]+) (.+)");
      Matcher matcher = pattern.matcher("Welcome Vitalii Mckay");
      if (!matcher.matches()) throw new Exception();
      String firstName = matcher.group(1); // groups are captured between ()
      String lastName = matcher.group(2); // groups are captured between ()
      
        String s = "Welcome Vitalii Mckay";
      
         String[] split = s.split("\\s+"); 
      
          System.out.println(split[2] + ", " + split[1]);
      
      String name = " Welcome Vitalii Mckay "; // with spaces in the beginning and in the end
      String[] parts = name.trim().split(" "); // you don't really need the \\
      name = parts[2] + ", " + parts[1];