【问题标题】:Tokenize string with scanner with a String pattern使用带有字符串模式的扫描仪标记字符串
【发布时间】:2015-03-25 11:08:09
【问题描述】:

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

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);

它不打印任何东西。

【问题讨论】:

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


    【解决方案1】:

    我不太确定您输入的是哪个输入以及您希望您的代码做什么,但这应该可以帮助您开始:

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

    【讨论】:

      【解决方案2】:

      你可以这样使用:

          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();
      

      【讨论】:

        【解决方案3】:

        根据javadocpublic String next(String pattern)方法的参数不是分隔符,而是匹配你token的正则表达式,相当于这样:

        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) 来分隔字符串;这将返回除以分隔符的字符串数组。

        【讨论】:

          【解决方案4】:

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

          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(String pattern) 的参数不能以“ ”开头。

          【讨论】:

            猜你喜欢
            • 2022-01-04
            • 2012-05-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-23
            相关资源
            最近更新 更多