我试着读取一个文件,只打印每行的第一个数字。我尝试过使用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();
}
}
}
3条答案
按热度按时间5fjcxozz1#
要读取反斜杠,需要将反斜杠加倍,因此请执行以下操作:
System.out.println(s.split("\\s")[0]);
而不是:System.out.println(s.split("\s")[0]);
ebdffaop2#
要匹配正则表达式中具有特殊含义的字符,需要使用带反斜杠(\)的转义序列前缀。空格的转义序列是
\s
所以你需要替换"\s"
与"\\s"
5lhxktic3#
正如我在评论中已经回答的那样,您需要在java中避开反斜杠。此外,你可以
trim()
在拆分前删除前导和尾随空格的字符串。这意味着,它也将与两位数或一位数的数字。所以你应该用的是: