我想问一个用户多个名字,用逗号分隔。我想逐个分解这些名字。我正在将输入读入一个字符串,然后我将其拆分为','。但是,只要用户在逗号之后但在下一个名称之前输入空格,程序就无法正常运行。见下文。
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
在我看来,就像在第一个逗号的第一个名字之后阅读空格一样。我该如何解决这个问题?
答案 0 :(得分:1)
trim()删除开头和结尾的空格。
String[] names = testInput.split(",");
for (String name : names) {
String[] partialName = name.trim().split(" ");
答案 1 :(得分:0)
您可以使用",\ s *"作为正则表达式,所以正则表达式引擎使用逗号和空格作为分隔符。