如何打印由制表符分隔的文件中的第一个单词?

How to print first word from a file separeted by a tab line?

我正在尝试读取文件并仅打印每行的第一个数字。我曾尝试使用拆分,但它从来没有 return 正确的结果,它只是在 table 中打印整个内容,如下所示。任何帮助将不胜感激

**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

publicclass字{

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

您需要双反斜杠才能读取反斜杠,所以这样做:

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

而不是:

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

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

替换 "\s"

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

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