使用带有String模式的扫描程序标记字符串

时间:2015-03-25 11:08:10

标签: java java.util.scanner token bufferedreader readline

我必须标记一个字符串,其中标记除以“ - ”。

String temp = in.readLine();
input_scanner = new Scanner(temp);

token_temp_token_1 = input_scanner.next();
token_temp_token_2 = input_scanner.next(" - ");
token_temp_token_3 = input_scanner.next(" - ");
System.out.println(token_temp_token_1 + " " + token_temp_token_3);

它不会打印任何内容。

4 个答案:

答案 0 :(得分:1)

我不确定您要输入的输入以及您希望代码执行的操作,但这应该可以帮助您入门:

Scanner scanner = new Scanner(System.in);
String[] parts = scanner.nextLine().split(" - "); 
System.out.println(parts[0] + " " + parts[1]);

答案 1 :(得分:0)

您可以使用以下内容:

    String temp = in.readLine();
    input_scanner = new Scanner(temp);

    token_temp_token_1 = input_scanner.next();
    token_temp_token_2 = input_scanner.skip(" - ").next();
    token_temp_token_3 = input_scanner.skip(" - ").next();
    System.out.println(token_temp_token_1 + " " + token_temp_token_3);

或类似的东西:

    String temp = in.readLine();
    input_scanner = new Scanner(temp);

    String[] tokens = input_scanner.nextLine().split(" - ");
    if (tokens.length > 2){
        System.out.println(tokens[0] + " " + tokens[2]);
    }
    input_scanner.close();

答案 2 :(得分:0)

根据javadoc,方法public String next(String pattern)的参数不是分隔符,而是与您的令牌匹配的正则表达式,它等同于:

Pattern tokenRegex = Pattern.compile(someRegex);
Matcher tokenizer = tokenRegex.matches(contentToBeTokenized);
List<String> tokens = new ArrayList<>();
while(tokenizer.find()){
    String token = tokenizer.group();
    tokens.add(token)
}

您应该使用someString.split(delimiter)来分隔字符串;这将返回由分隔符分隔的字符串数组。

答案 3 :(得分:0)

这取决于您的输入和令牌。如果编码如下:

String str = "Hello World";
Scanner scanner = new Scanner(str);

System.out.println(scanner.next("Hello"));
System.out.println(scanner.next("World"));

你会看到结果。在下一行打印Hello和World。 scanner.next(字符串模式)的参数不应以&#34;开头。 &#34;