如何拆分以下字符串

时间:2014-12-15 00:04:09

标签: java arrays regex string split

我正在尝试拆分以下格式的字符串: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];
}

5 个答案:

答案 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