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

6vl6ewon  于 2021-07-08  发布在  Java
关注(0)|答案(3)|浏览(244)

我试着读取一个文件,只打印每行的第一个数字。我尝试过使用split,但它从来没有返回正确的结果,它只是在下表中打印整个内容。任何帮助都将不胜感激


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

        }
5fjcxozz

5fjcxozz1#

要读取反斜杠,需要将反斜杠加倍,因此请执行以下操作: System.out.println(s.split("\\s")[0]); 而不是: System.out.println(s.split("\s")[0]);

ebdffaop

ebdffaop2#

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

5lhxktic

5lhxktic3#

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

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

相关问题