java - 字符串全名分割java

标签 java

我创建了一个程序来解析名字、中间名和姓氏。这是程序和输出。这个程序绝对可以改进,需要一些输入来减少我繁琐的丑陋代码并将其替换为更好的代码。有什么建议或例子吗?

public class Test {

  public static void main(String[] args) {

    String fullName = "John King IV. Cena";
    String[] tokens = fullName.split(" ");
    String firstName = "";
    String middleName = "";
    String lastName = "";
    if(tokens.length > 0) {
        firstName = tokens[0];
        middleName = tokens.length > 2 ? getMiddleName(tokens) : "";
        lastName = tokens[tokens.length -1];
    }
    System.out.println(firstName);
    System.out.println(middleName);
    System.out.println(lastName);
  }

  public static String getMiddleName(String[] middleName){
      StringBuilder builder = new StringBuilder();
      for (int i = 1; i < middleName.length-1; i++) {
          builder.append(middleName[i] + " ");
      }

      return builder.toString();
  }
}

约翰 国王四世。 塞纳

最佳答案

此代码执行相同的操作,但不在中间名中保留尾随空格。这是几种可能的更清洁实现中的一个。

public class Test {

    public static void main(String[] args) {

        String name = "John King IV. Cena";

        int start = name.indexOf(' ');
        int end = name.lastIndexOf(' ');

        String firstName = "";
        String middleName = "";
        String lastName = "";

        if (start >= 0) {
            firstName = name.substring(0, start);
            if (end > start)
                middleName = name.substring(start + 1, end);
            lastName = name.substring(end + 1, name.length());
        }    

        System.out.println(firstName);
        System.out.println(middleName);
        System.out.println(lastName);
    }
}

正如大伙所说,下次直接去https://codereview.stackexchange.com/

关于java - 字符串全名分割java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702534/

相关文章:

java - 使用Spring JdbcTemplate提取一个字符串

java - 使用java检查数据库中重复值的最佳实践

java - 绝地武士:破管

java - 在java中抛出异常后继续执行

java - 将 Hippo JCR 日期时间转换为 Java 格式

java - 如何将java应用程序从oracle jdk迁移到openjdk?

java - 如何检查字符串数组中的元素是否为空?

java - 即使使用工具,Java 中对象的内存地址

Java BoneCP MySQL 连接超时

java - 如何使用 GWT 或 Javascript 强调 DIV 内的文本 (innerText) :