在java中读取多个项目时,如何在逗号后忽略空格

时间:2017-03-03 22:49:37

标签: java java.util.scanner

我想问一个用户多个名字,用逗号分隔。我想逐个分解这些名字。我正在将输入读入一个字符串,然后我将其拆分为','。但是,只要用户在逗号之后但在下一个名称之前输入空格,程序就无法正常运行。见下文。

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

在我看来,就像在第一个逗号的第一个名字之后阅读空格一样。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

trim()删除开头和结尾的空格。

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

答案 1 :(得分:0)

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