如何打印由制表符分隔的文件中的第一个单词?
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]);
我正在尝试读取文件并仅打印每行的第一个数字。我曾尝试使用拆分,但它从来没有 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]);