0

我收到全名,我需要将其拆分为Salutation、Firstname 和 lastname。例如。

  • Steve Emond==> Steve 作为名字,Emond 作为姓氏(这里的称呼是空的)
  • 克里斯·巴克先生 ==> 先生作为称呼,克里斯作为名字,巴克作为姓氏
  • Justin ==> Justin 作为姓(Salutation 和 Firstname 为空)

注意:收到 Miss,Mr,Mrs 作为称呼值。

代码:

 String FirstName="";
 String fullName="Barker";
String[] nameArray=fullName.split(" ");
if(nameArray.length<3)
{
    System.out.println("Salutation: " + nameArray[0]);
    System.out.println("LastName: " + nameArray[1]);
    System.out.println("FirstName: " + FirstName);
}else if(nameArray.length>=3){
    System.out.println("Salutation: " + nameArray[0]);
    System.out.println("LastName: " + nameArray[nameArray.length - 1]);
    for (int index = 1; index < nameArray.length - 1; index++) {
        FirstName = FirstName + " " + nameArray[index];
     }
    System.out.println("FirstName: " + FirstName.trim());
}

当输入中给出的所有值(即 Chris Barker 先生)时,上面的代码工作正常,对于其余情况它失败了。谁能为我提供解决方案?

4

1 回答 1

3

方法一:

    String fullName="Steve Emond";
		String[] nameArray=fullName.split(" ");
		if(nameArray.length==1)
		{
			System.out.println("LastName: " + nameArray[0]);
		   
		}else if(nameArray.length==2){
			System.out.println("FirstName: " + nameArray[0]);
			System.out.println("LastName: " + nameArray[1]);		    
		}
		else if(nameArray.length==3){
			System.out.println("Salutation: " + nameArray[0]);
			System.out.println("FirstName: " + nameArray[1]);
			System.out.println("LastName: " + nameArray[2]);		    
		}

使用正则表达式方法 2:

String fullName="Mr Justin raj Savarimuthu";
		Pattern pattern = Pattern.compile(new String ("(Mr\\s|Miss\\s|Mrs\\s)"));
		
		if(fullName.matches("(Mr\\s|Miss\\s|Mrs\\s).*"))
		{
			System.out.println("Salutation:"+fullName.substring(0,fullName.indexOf(' ')));
			fullName=pattern.split(fullName)[1].trim();
		}
		
		String[] parts = fullName.split(" ");
		String firstName="";
		for(int i=0;i<parts.length-1;i++)
		{
			firstName=firstName+parts[i]+" ";
		}
        if(firstName!="")
        	System.out.println("FirstName:"+firstName);
        System.out.println("LastName:"+parts[parts.length-1]);

于 2020-01-20T09:56:22.450 回答