Чтобы разделить полное имя на приветствие, имя и фамилию в java - PullRequest
0 голосов
/ 20 января 2020

Я получаю полное имя, мне нужно разделить его на Приветствие, Имя и Фамилия . например,

  • Стив Эмонд ==> Стив как Имя, Emond как фамилия (здесь Приветствие Пусто)
  • Мистер Крис Баркер ==> Мистер как Приветствие, Крис как Имя, Баркер как фамилия
  • Джастин ==> Джастин как фамилия (Приветствие и Имя пусты)

Примечание: получил мисс, мистер, миссис в качестве значения приветствия.

Код:

 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());
}

Приведенный выше код прекрасно работает, когда все значения, указанные во входных данных (ie Мистер Крис Баркер), для оставшегося случая завершились неудачно. Кто-нибудь может дать мне решение для этого?

1 Ответ

3 голосов
/ 20 января 2020

Способ 1:

    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]);		    
		}

Использование метода Regex 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]);
...