0

我正在尝试读取文件并仅打印每行的第一个数字。我曾尝试使用拆分,但它永远不会返回正确的结果,它只是打印整个内容,如下表所示。任何帮助将不胜感激

**thats my file** 

 40    3  Trottmann
 43    3  Brubpacher
252    3  Stalder
255    3  Leuch
258    3  Zeller
261    3  Reolon
264    3  Ehrismann
267    3  Wipf
270    3  Widmer 

**expected output** 
 40
 43
258
261
264
267
270

输出

258
261
264
267
270

公共课词{

            public static void main(String[] args) {
                
                // Create file
                File file = new File("/Users/lobsang/documents/start.txt");
    
                try {
                    // Create a buffered reader
                    // to read each line from a file.
                    BufferedReader in = new BufferedReader(new FileReader(file));
                    String s;
    
                    // Read each line from the file and echo it to the screen.
                    s = in.readLine();
                    while (s != null) {
                        
                          
                        
                        System.out.println(s.split("\s")[0]);
                    
                        
                        s = in.readLine();
                    }
                    
                    // Close the buffered reader
                    in.close();
    
                } catch (FileNotFoundException e1) {
                    // If this file does not exist
                    System.err.println("File not found: " + file);
    
                } catch (IOException e2) {
                    // Catch any other IO exceptions.
                    e2.printStackTrace();
                }
            }
    
        }
4

3 回答 3

1

您需要双反斜杠才能读取反斜杠,因此请执行以下操作:

System.out.println(s.split("\\s")[0]);

代替:

System.out.println(s.split("\s")[0]);

于 2020-11-16T15:16:10.327 回答
1

要匹配正则表达式中具有特殊含义的字符,您需要使用带有反斜杠 (\) 的转义序列前缀。空格的转义序列是\s所以你需要替换"\s""\\s"

于 2020-11-16T15:31:56.943 回答
0

正如我已经在评论中回答的那样,您需要在 java 中转义反斜杠。此外,您可以trim()在拆分字符串之前将其删除,从而删除前导和尾随空格。这意味着,它也适用于两位数或一位数。所以你应该使用的是:

System.out.println(s.trim().split("\\s")[0]);
于 2020-11-16T15:42:12.510 回答