2017-03-03 61 views
0

我想要求用户输入多个名称,用逗号分隔。然后我想分别分解名字。我正在将输入读入一个字符串,然后按''分隔。但是,只要用户在逗号后输入空格,但在下一个名称之前输入空格,程序就无法正常运行。见下文。如何在java中的多个项目中读取逗号后忽略空格

import java.util.Scanner; 

public class getInput { 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 

     System.out.print("Please enter names seperated by a ',':> "); 
     String testInput = sc.nextLine(); 
     String[] names = testInput.split(","); 
     for (String name : names) { 
      String[] partialName = name.split(" "); 
      if (partialName[0].equals(" ")){ 
       if (partialName.length == 4) { 
        System.out.println("Should be a space: " + partialName[0]); 
        System.out.println("First Name: " + partialName[1]); 
        System.out.println("Middle Name: " + partialName[2]); 
        System.out.println("Last Name: " + partialName[3]); 
       } else { 
        System.out.println("First Name: " + partialName[1]); 
        System.out.println("Last Name: " + partialName[2]); 
       } 
      } 
      else { 
       if (partialName.length == 3) { 
        System.out.println("First Name: " + partialName[0]); 
        System.out.println("Middle Name: " + partialName[1]); 
        System.out.println("Last Name: " + partialName[2]); 
       } else { 
        System.out.println("First Name: " + partialName[0]); 
        System.out.println("Last Name: " + partialName[1]); 
       } 
      } 
     } 

     sc.close(); 
    } 
} 

例如:

Please enter names seperated by a ',':> Joe Smith, Jack Sparrow Doe,Steve Parker 
First Name: Joe 
Last Name: Smith 
First Name: 
Last Name: Jack 
First Name: Steve 
Last Name: Parker 

在我看来,就像是在读那个人的名字第一个逗号后面的空格。我该如何解决?

回答

1

trim()在开始和结束时删除空格。

String[] names = testInput.split(","); 
    for (String name : names) { 
     String[] partialName = name.trim().split(" "); 
+0

这样做的窍门,谢谢。 – Tyler

+0

没问题,你能将我的答案标记为你的问题的解决方案吗? – Koche

0

您可以使用“,\ s *”作为正则表达式,因此正则表达式引擎使用逗号和空格作为分隔符。

+0

那会在附加到scanner对象的useDelimiter()函数中吗? – Tyler

+0

在您的拆分方法 –

+0

感谢您的帮助! Eclipse告诉我这是一个无效的转义序列。我对Java有点新(如果它不是很明显,哈哈)。如果我得到这个工作,它是否会处理用户在逗号后没有包含空格的情况?我需要能够处理这两种情况的东西。 – Tyler