我正在尝试拆分以下格式的字符串:Drops 3:6-9并将它们存储在单独的数据类型中,一个用于Drops,一个用于3,另一个用于6-9,我怎么能这样做?到目前为止,我有:
Scanner s = new Scanner(System.in);
System.out.println("Enter the name, number, and between which lines you want to search");
String input = s.next();
String parts[] = input.split(" ");
int num1 = Integer.parseInt(parts[parts.length-1];
int num2 = Integer.parseInt(parts[parts.length-2];
int num3 = Integer.parseInt(parts[parts.length-3];
String s = " ";
for(int i = 0; i < parts.length; i++) {
s += parts[i];
}
答案 0 :(得分:2)
您可以使用此正则表达式拆分空格,冒号或连字符:
[ :-]
在Java中:
String parts[] = input.split("[ :-]"); // [Drops, 3, 6, 9]
答案 1 :(得分:2)
您可以单独获取信息。
Scanner scan = new Scanner(System.in);
String name = scan.nextLine();
int number = scan.nextInt();
String lines = scan.next();
int startIndex = Integer.parseInt(lines.substring(0,lines.indexOf('-')));
int lastIndex = Integer.parseInt(lines.substring(lines.indexOf('-')+1,lines.length()));
答案 2 :(得分:1)
这里你就是这么简单:
String s = "Drops 3:6-9";
String[] words = s.split(" ");
String[] words1 = words[1].split(":");
String[] words2 = words1[1].split("-");
String[] words3 = new String []{words[0], words1[0],words2[0], words2[1]};
然后你会得到:
String dataType1 = words3[0]; // "Drop"
String dataType2 = words3[1]; // "3"
String dataType3 = words3[2]; // "6"
String dataType4 = words3[3]; // "9"
答案 3 :(得分:1)
如果您想要对输入的内容进行更多验证和控制,请考虑使用Pattern
和相应的Matcher
代替简单拆分功能。
// String input = "Drop 3:6-9";
Pattern pattern = Pattern.compile("(\\S+)\\s+(\\d+):(\\d+)-(\\d+)");
Matcher matcher = pattern.matcher(input);
if (matcher.find())
String name = matcher.group(1); // "Drop"
String number = matcher.group(2); // "3"
String betweenStart = matcher.group(3); // "6"
String betweenEnd = matcher.group(4); // "9"
}
// else: invalid input, error handling left as an exercise for the reader
请注意,Pattern
实例是不可变且线程安全的,因此您只需创建一次。 Matcher
不是线程安全的,因此每次输入使用新的通常最简单。
答案 4 :(得分:0)
如果输入允许在表单中(下拉3:6-9),则此代码可以工作:
String parts1[] = input.splite(" ");
String parts2[] = parts1[1].splite(":");
String part1 = parts1[0]; // Drops
int num = Integer.valueOf(parts2[0]); //3
String part2 = parts2[1] // 6-9