我正在尝试拆分以下格式的字符串: 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];
}
发布于 2014-12-15 00:16:49
如果您想要对输入进行更多的验证和控制,可以考虑使用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
并不是线程安全的,所以对每个输入使用一个新的通常是最容易的。
发布于 2014-12-15 00:14:05
可以使用此正则表达式在空白、冒号或连字符上拆分:
[ :-]
在Java中:
String parts[] = input.split("[ :-]"); // [Drops, 3, 6, 9]
发布于 2014-12-15 00:23:53
你可以单独获取信息。
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()));
https://stackoverflow.com/questions/27475594
复制相似问题